热线电话:13121318867

登录
2019-03-14 阅读量: 744
在特定值之前选择行的子集的Pandas发生在另一列中

我希望在列Y,groupby列X中出现值之前从我的数据框中提取行的子集。

例如,在这种情况下,对于X中的每个唯一值,我想在Y中出现'1'之前提取所有行,并且输出应该包括遇到第一个'1'的行。

X Y Z

index

0 A 0 56

1 A 0 67

2 A 1 66

3 A 0 83

4 A 1 88

5 B 0 52

6 B 1 66

7 B 1 70

8 C 0 68

9 C 0 72

10 D 1 65

我想要的输出是:

X Y Z

index

0 A 0 56

1 A 0 67

2 A 1 66

5 B 0 52

6 B 1 66

8 C 0 68

9 C 0 72

10 D 1 65

解决办法:您可以使用groupby和apply使用cumsum()x2技巧:

df[df.groupby('X').Y.apply(lambda x: x.cumsum().cumsum()).le(1)]

X Y Z

index

0 A 0 56

1 A 0 67

2 A 1 66

5 B 0 52

6 B 1 66

8 C 0 68

9 C 0 72

10 D 1 65

0.0000
2
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子