删除按字符串值分组的行 - 熊猫

时间:2021-04-16 01:27:13

标签: python pandas

我的目标是在 Pandas df 中删除行,其中一行等于特定值。但是,我想扩展它,以便它还删除按单独列分组的关联行。例如,我想删除 Label == A,D 的所有行,但我还要删除来自同一组的 Num 中的关联行。

import pandas as pd

df = pd.DataFrame({           
    'Num' : [1,1,1,2,2,3,3,4,4,4],
    'Label' : ['X','X','A','Y','Y','Y','Y','Y','Y','D'],  
   })

df = df.groupby('Num').filter(lambda x: (x['Label'].isin['A','D']).any())

预期输出:

   Num Label
3    2     Y
4    2     Y
5    3     Y
6    3     Y

2 个答案:

答案 0 :(得分:2)

你很接近,只需添加否定:

df.groupby('Num').filter(lambda x: ~x['Label'].isin(['A','D']).any())

输出:

   Num Label
3    2     Y
4    2     Y
5    3     Y
6    3     Y

答案 1 :(得分:1)

让我们尝试使用 isin 没有 groupby

out = df.loc[~df.Num.isin(df.loc[df.Label.isin(['A','D']),'Num'])]
Out[108]: 
   Num Label
3    2     Y
4    2     Y
5    3     Y
6    3     Y