Удалить строку: не соответствует другим столбцам

#pandas #csv

#pandas #csv

Вопрос:

У меня есть фрейм данных, который выглядит так:

 Type    Brand A Brand B
Type A  ID A    ID AA
Type B  ID A    ID AA
Type A  ID B    ID BB
Type B  ID B    ID BB
Type B  ID C    ID CC
Type A  ID C    ID DD
Type B  ID D    ID EE
Type A  ID D    ID FF
  

Я хочу удалить или исключить строки данных из двух столбцов марки и столбца ype (должно быть пара)

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

 Type    Brand A Brand B
Type A  ID A    ID AA
Type B  ID A    ID AA
Type A  ID B    ID BB
Type B  ID B    ID BB
  

заранее благодарю

Комментарии:

1. На каком основании мы пытаемся удалить строки?

Ответ №1:

Вы можете проверить, является ли количество уникальных значений по SeriesGroupBy.nunique , а также количество DataFrameGroupBy.size по группам парой ( 2 ):

 g = df.groupby(['Brand A','Brand B'])['Type']
df = df[g.transform('nunique').eq(2) amp; g.transform('size').eq(2)]
print (df)
     Type Brand A Brand B
0  Type A    ID A   ID AA
1  Type B    ID A   ID AA
2  Type A    ID B   ID BB
3  Type B    ID B   ID BB
  

Если необходимо проверить Type A и Type B :

 g = df.groupby(['Brand A','Brand B'])['Type']
df = df[g.transform(lambda x: set(x) == set(['Type A','Type B'])) amp; g.transform('size').eq(2)]
print (df)
     Type Brand A Brand B
0  Type A    ID A   ID AA
1  Type B    ID A   ID AA
2  Type A    ID B   ID BB
3  Type B    ID B   ID BB