我有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
怎么做?
答案 0 :(得分:2)
将groupby
和transform
与nunique
一起使用
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)
您还可以将groupby
与nunique
一起使用,并选择行:
>>> 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
>>>