根据两列条件放置行

时间:2019-06-10 02:22:28

标签: python pandas row multiple-columns

我有dataframe像这样:

df
Data1   Data2   Data3
A       XX      AA
A       YY      AA
B       XX      BB
B       YY      CC
C       XX      DD
C       YY      DD
D       XX      EE
D       YY      FF

我要删除基于两列(data1和data2)的所有行(column data3),条件是data3上的数据与删除相同。

我的预期结果如下:

Data1   Data2   Data3
B       XX      BB
B       YY      CC
D       XX      EE
D       YY      FF

怎么做?

2 个答案:

答案 0 :(得分:2)

groupbytransformnunique一起使用

yd=df[df.groupby(['Data1']).Data3.transform('nunique').gt(1)].copy()
Out[506]: 
  Data1 Data2 Data3
2     B    XX    BB
3     B    YY    CC
6     D    XX    EE
7     D    YY    FF

答案 1 :(得分:1)

您还可以将groupbynunique一起使用,并选择行:

>>> group = df.groupby('Data1')['Data3'].nunique()
>>> df[df['Data1'].isin(group[group.gt(1)].index)]
  Data1 Data2 Data3
2     B    XX    BB
3     B    YY    CC
6     D    XX    EE
7     D    YY    FF
>>>