我有两个 pandas 数据框 df1 和 df2。我需要通过搜索 df2['B'] 来查看 df1['A'] 是否是 df2['B'] 的子字符串,在 df1 中创建一个新列,反之亦然。如果存在匹配,则返回 df1['B'] 中新列的 df2['A'] 值。
以下是示例数据框
df1
A B
8GSHDK1 ?
SDFAGHJFDJ GSHJGGFV
678HJDGGH
576GHJHJJKHJJH
YRYWEUIYWRE
df2
A B
1 GSHJGGFV
2 XXXYYYYY
3 8GSHDK1 TO BE DEL
在这种情况下合并不起作用,因为 df1['A'] 包含 df2['B'] 的子字符串或 df2['B'] 包含 df1['A'] 的子字符串。
我在下面尝试过,但它运行了 7 到 8 小时。df1 有 25k 条记录,df2 有 720k 条记录
df1['B']=df1['A'].apply(lambda x: df2[df2['B'].str.contains(x) | df2['B'].apply(lambda y : y in x)]['B'].any())
任何帮助将非常感激。预期输出:
df1
A B
8GSHDK1 8GSHDK1 TO BE DEL
SDFAGHJFDJ GSHJGGFV GSHJGGFV
678HJDGGH None
576GHJHJJKHJJH None
YRYWEUIYWRE None
DIEA
FFIVE
守着一只汪