我正在使用pandas数据帧,我想在满足条件(cond = 1)后删除具有相同名称的观察。
我的数据集如下:
person med cond
A a 0
A b 0
A a 1
A d 0
A e 0
B a 0
B c 1
C e 1
C f 0
D a 0
D f 0
我想得到这个:
person med cond
A a 0
A b 0
A a 1
B a 0
B c 1
C e 1
D a 0
D f 0
我希望代码首先检查下一个人是否具有相同的名称,然后检查是否满足条件(cond = 1),如果是,则删除所有具有相同名称的下一行。
有人可以帮我吗?
答案 0 :(得分:0)
您可以在df上groupby
,然后在lambda
中引用感兴趣的列表,然后调用reset_index(drop=True)
以删除冗余索引:
In [38]:
df.groupby('person').apply( lambda x: x.loc[:x['cond'].idxmax()] if len(x[x['cond']==0]) != len(x) else x).reset_index(drop=True)
Out[38]:
person med cond
0 A a 0
1 A b 0
2 A a 1
3 B a 0
4 B c 1
5 C e 1
6 D a 0
7 D f 0