Pandas - Как проверить, содержит ли список строк в строке DF какие-либо из последовательных строк в другом DF? - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть DataFrame, который в одном из столбцов содержит списки строк, как этот:

print(df_1.lists)

из:

0      [Pucku, Byłam, Miruś, Funkcjonariusze]
1      [Greger, Pytam, Jana, Dopóki, Wiary]
2      [Baborowa, Chcę, Innym, Baborowie]
etc

И у меня есть еще один DataFrame, который в Серии содержит слова:

print(df_2.check)

из

0                   Olszany
1                    Pucków
2                  Baborowa
3                Studzionki
4                     Pytam
5                  Lasowice
etc

Я хочу взять каждую строку df_1.lists и проверить, содержит ли список какие-либо слова из df_2.check. Если он содержит, то я хотел бы назначить эти содержащиеся слова столбцу в df_1.lists. Как это сделать?

[РЕДАКТИРОВАТЬ] Я попытался df_1.lists.apply (лямбда-x: [список (набор (df_2.checks.str.extract (r "(" + i + r ")"). Dropna (). Значения)) ибо я в х]), но это слишком медленно.

1 Ответ

0 голосов
/ 04 сентября 2018

Использовать понимание вложенного списка:

df_1['new'] = [[y for y in x if y in df_2['check'].values] for x in df_1['lists']]

Или получить intersection между набором и списком для каждого значения:

df_1['new'] = [list(set(x).intersection(df_2['check'])) for x in df_1['lists']]

Похоже intersection между наборами:

s = set(df_2['check'])
df_1['new'] = [list(set(x).intersection(s)) for x in df_1['lists']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...