python - 如何比较数据框中的两个字符串列表以获取任何匹配项以在 python 中获得 True 或 False?
问题描述
我在由字符串列表组成的数据框中有两列。我想比较列表中的所有项目以查看是否有任何匹配项并返回 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,因为列表中有匹配的项目。
解决方案
在你的使用以下apply
lambda row: bool(row['one'] & row['two']), axis=1
在这里,因为row['one']
和row['two']
已经转换为集合,执行和&
之间的交集运算row['one']
row['two']
推荐阅读
- javascript - Plotly/Dash:如何使行索引独一无二?
- scala - Scala MaxBy 的元组
- docker - openshift 正在使用 uid 101 运行所有容器,而不是从项目范围中获取 uid
- r - 使用向量的 URL 替换
- javascript - 按其值之一合并数组
- redis - 当我想在 redis pro 中使用 hangfire 服务器时,我有一个例外
- alfresco - Alfreso 中官方支持的搜索语言有哪些?
- python - 向熊猫图标签添加更多文本
- swift - 如何从 LocalizedStringKey 获取字符串值?
- android - 当我尝试在 Android Studio 中插入新的矢量资源时,“无显示”