Удалить строку на основе условий двух столбцов - PullRequest
0 голосов
/ 10 июня 2019

у меня 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

Я хочу удалить всю строку (столбец data3) на основе двух столбцов (data1 и data2) с условием, если данные в data3 совпадают с удалением.

мой ожидаемый результат выглядит так:

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

как это сделать?

Ответы [ 2 ]

2 голосов
/ 10 июня 2019

Использование 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 голос
/ 10 июня 2019

Вы также можете использовать 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
>>> 
...