如何比较数据帧中的两个字符串列表是否有任何匹配,以便在python中获得True或False?

时间:2019-07-09 17:16:44

标签: python list dataframe

我在数据框中有两列,由字符串列表组成。我想比较列表中的所有项目以查看是否有任何匹配项,并返回True / False(或任何其他标志)列以突出显示任何匹配项。

我试图通过创建集合并逐行比较来做到这一点,但是当它应该返回“ True”时,我一直得到“ False”(在第一和第二列中是“ a”,因此应该为True) 。如何比较这两个列表?

df = pd.DataFrame({'one': [['a','bb','b','v'], ['aa','b','c','e']],
                  'two': [['b','aa','a','d'],['b','w','f']]})

df['one'] = df.apply(lambda row: set(row['one']), axis=1)
df['two'] = df.apply(lambda row: set(row['two']), axis=1)

df['check'] = df.apply(lambda row: row['one'] in row['two'], axis=1)

print(df)

我希望有一个新列,输出为True,因为列表中有匹配的项目。

1 个答案:

答案 0 :(得分:1)

在您的apply

中使用以下内容
lambda row: bool(row['one'] & row['two']), axis=1

在这里,由于row['one']row['two']已经转换为集合,因此&row['one']row['two']之间执行相交运算