Проверьте, находятся ли элементы списка Python в строке Pandas данных - PullRequest
2 голосов
/ 25 февраля 2020

Мой вопрос может быть простым, но я не могу быстро найти решение. У меня есть фрейм данных 'df', и я хочу проверить, существуют ли элементы в моем списке 'list' в какой-либо строке df.

Это пример df:

enter image description here

И это пример my_list:

enter image description here

В этом случае я хочу получить строку 2 из df как все элементы в my_list существуют в этой строке.

Спасибо

Ответы [ 4 ]

2 голосов
/ 25 февраля 2020

Вы можете попробовать pandas isin

df.loc[df.isin(my_list).astype(int).sum(axis=1) == len(my_list), :]

, где my_list - ваш список поисков, которые вы хотите выполнить.

ПРИМЕЧАНИЕ: Если вы хотите частичное совпадение вы можете поиграть с условием.

1 голос
/ 25 февраля 2020

Изображение кода

import pandas as pd
data={'Color': ['Blue','Green','Yellow','Purple','Orange'],
      'Number':[20,21,19,18,40],
      'Code':['ss','dd','dd','xx','tt'],
      'Flag':[1,1,0,1,0]}
df=pd.DataFrame(data)
print(df)
my_list=list(df.iloc[2])
print(my_list)

Вывод кода

1 голос
/ 25 февраля 2020

Подобный вопрос уже задавался. ссылка на этот вопрос

import pandas as pd

df = pd.DataFrame({'Color':['Blue', 'Green', 'Yellow', 'Purple','Orange'], 
    'Number':[20, 21, 19, 18, 40],
    'Code':['ss', 'dd', 'ee', 'xx', 'tt'],
    'Flag':[1, 1, 0, 1, 0]
})

names = set(['Yellow', 0, 'ee'])

m = [names.issubset(i) for i in df.values.tolist()]

print(df[m])

0 голосов
/ 25 февраля 2020

Вот еще один способ использования applymap:

df.loc[df.applymap(lambda x: x in names).sum(1).eq(len(names))]

    Color  Number Code  Flag
2  Yellow      19   ee     0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...