Python 熊猫-如何检查DF行中的字符串列表是否包含其他DF中的任何串联字符串?

Python 熊猫-如何检查DF行中的字符串列表是否包含其他DF中的任何串联字符串?,python,pandas,Python,Pandas,我有一个DataFrame,其中一列包含字符串列表,如下所示: print(df_1.lists) 输出: 我还有另一个数据框,它在一个系列中包含: print(df_2.check) 输出: 我想获取dfu 1.列表的每一行,并检查列表是否包含dfu 2.中的任何单词。如果它包含,那么我想将这些包含的单词分配到dfu 1.lists中的一列。怎么做 [编辑]我尝试了df_1.lists.apply(lambda x:[list(set(df_2.checks.str.extract(r“(

我有一个DataFrame,其中一列包含字符串列表,如下所示:

print(df_1.lists)
输出:

我还有另一个数据框,它在一个系列中包含:

print(df_2.check)
输出:

我想获取
dfu 1.列表的每一行,并检查列表是否包含
dfu 2.中的任何单词。如果它包含,那么我想将这些包含的单词分配到
dfu 1.lists
中的一列。怎么做


[编辑]我尝试了df_1.lists.apply(lambda x:[list(set(df_2.checks.str.extract(r“(“+I+r”)”)).dropna().values))来表示x中的I),但这太慢了。

使用嵌套列表理解:

df_1['new'] = [[y for y in x if y in df_2['check'].values] for x in df_1['lists']]
或者为每个值获取集合和列表之间的交集

df_1['new'] = [list(set(x).intersection(df_2['check'])) for x in df_1['lists']]
集合之间类似的
交叉点

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

有趣的问题。您可以通过以下方式向我们显示您最近的尝试吗?您好,显示您的尝试是Stackoverflow策略。请仔细阅读并在问题中显示您的尝试。在中添加了我的尝试
df_1['new'] = [list(set(x).intersection(df_2['check'])) for x in df_1['lists']]
s = set(df_2['check'])
df_1['new'] = [list(set(x).intersection(s)) for x in df_1['lists']]