繁体   English   中英

熊猫:根据条件删除组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM