как отфильтровать фрейм данных, если строка содержит два значения из списка в столбце - PullRequest
1 голос
/ 06 ноября 2019

Мне нужно отфильтровать ОГРОМНЫЙ фрейм данных панд, который содержит в столбце «А» два слова из списка. Я уже отфильтровал его, учитывая только значение из word_list, но я не понял, как это сделать для двух значений.

new_df = df[df["A"].apply(lambda x: any(i in x.split() for i in word_list))]

спасибо всем

1 Ответ

0 голосов
/ 06 ноября 2019

Вы можете сделать explode, затем get_dummies, sum по level, затем sum по столбцам, если строка возвращает значение больше 2, мы должны выбрать

df[df["A"].explode().str.get_dummies().\
     sum(level=0).gt(0).reindex(columns=word_list).sum(axis=1).ge(2)]

Или мыможно сделать sklearn.MultiLabelBinarizer

from sklearn.preprocessing import MultiLabelBinarizer
mlb = MultiLabelBinarizer()
s=pd.DataFrame(mlb.fit_transform(df['A']),columns=mlb.classes_, index=df.index)
df[s.sum(axis=1).gt(1)]
...