2 回答

TA贡献1828条经验 获得超13个赞
试一试:
法典:
dfA['MATCH'] = dfA['TEXT'].apply(lambda x: min(len([ y for y in dfB['INFO'] if y in x]), 1))
输出:
ITEM ID TEXT MATCH
0 1 some random words 1
1 2 another word 0
2 3 blah 1
3 4 random words 1
如果不是比赛,那就是0,但这很容易被淘汰。
可能有一个更好/更快的本机解决方案,但它通过迭代“TEXT”列和“INFO”来完成工作。根据您的使用案例,它可能足够快。
看起来代替也会一样好用。同样,根据您的使用案例,可能会在时间上有所不同。.map().apply()

TA贡献1995条经验 获得超2个赞
更新以考虑字符串包含而不是完全匹配...
您可以从第一个数据帧中的列中获取唯一值,将其转换为 list,然后在第二个数据帧上使用 eval 方法,并在该列表中使用 Column.str.contains。
unique = df1['TEXT'].unique().tolist()
df2.eval("Match=Text.str.contains('|'.join(@unique))")
添加回答
举报