Выберите строки с определенным условием из другого кадра данных - PullRequest
1 голос
/ 17 апреля 2019

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

colors
red
blue
green
black
pink

И еще один кадр данных df1, который имеет много столбцов (~ 300 столбцов):

colorName col1 col2 ... colN
pink 1 0 1 ... 0
white 0 1 1 ... 1
blue 1 0 0 ... 0
yellow 0 0 0 ... 0

Мне нужно вернуть строки df, в которых он существует, в df1.colorName и иметь хотя бы значение 1 в любом из столбцов (col1 ... colN)

Итак, из вышесказанного; вывод должен быть:

blue
pink

Я начинаю с этого, но я уверен, что для этого нужно дополнительное условие (проверка должна иметь хотя бы значение 1 в любом из столбцов (col1 ... colN))

newDF = df[df.colors.isin(df1.colorName) && ]

Поправь меня, если я ошибаюсь, и любая помощь будет признательна.

1 Ответ

2 голосов
/ 17 апреля 2019

Используйте boolean indexing с выбранными столбцами по DataFrame.iloc - все столбцы без первого с DataFrame.any как минимум для одного True на строкии DataFrame.loc для первого столбца colorName и передать его на фильтрацию по Series.isin:

c = df1.loc[df1.iloc[:, 1:].any(axis=1), 'colorName']
#alternative
#c = df1.loc[df1.drop('colorName', axis=1).any(axis=1), 'colorName']
newDF = df[df. colors.isin(c)]
print (newDF)
  colors
1   blue
4   pink

Detail :

print (c)
0     pink
1    white
2     blue
Name: colorName, dtype: object
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...