[英]Pandas: remove groups based on conditions
当条件满足时,我想从我的熊猫数据框中删除组。 例如对于此数据集,每当客户回答i
来询问a
我都需要从该客户中删除全部记录。
import pandas as pd
df = pd.DataFrame({'customer': [1, 1, 2], 'question': ['a', 'b', 'a'], 'answer': ['i', 'ii', 'iii']})
df
customer question answer
0 1 a i
1 1 b ii
2 2 a iii
因此,对于这种情况,我需要像这样过滤掉。
customer question answer
0 2 a iii
什么是实现此目标的好方法? 我能想到的唯一方法就是旋转,过滤和融合。
In [226]: df[~df.customer.isin(df.loc[df.answer.eq('i') & df.question.eq('a'),'customer'].unique())]
Out[226]:
answer customer question
2 iii 2 a
可以通过filter
完成
df.groupby('customer').filter(lambda x : ~((x.answer=='i')&(x.question=='a')).any())
Out[109]:
answer customer question
2 iii 2 a
您也可以这样做(不具备Costum函数):
df[~df['customer'].isin(df[df['question']+df['answer']=='ai']['customer'].values)]
输出:
Out[343]:
answer customer question
2 iii 2 a
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.