我希望在列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
三个资料Q群下载不了也转发不了,先放这里Fine_tuning.zipLangChain.zipdata_clear.rar