2 回答

TA貢獻(xiàn)1828條經(jīng)驗 獲得超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,但這很容易被淘汰。
可能有一個更好/更快的本機(jī)解決方案,但它通過迭代“TEXT”列和“INFO”來完成工作。根據(jù)您的使用案例,它可能足夠快。
看起來代替也會一樣好用。同樣,根據(jù)您的使用案例,可能會在時間上有所不同。.map().apply()

TA貢獻(xiàn)1995條經(jīng)驗 獲得超2個贊
更新以考慮字符串包含而不是完全匹配...
您可以從第一個數(shù)據(jù)幀中的列中獲取唯一值,將其轉(zhuǎn)換為 list,然后在第二個數(shù)據(jù)幀上使用 eval 方法,并在該列表中使用 Column.str.contains。
unique = df1['TEXT'].unique().tolist()
df2.eval("Match=Text.str.contains('|'.join(@unique))")
添加回答
舉報