说我有一个数据框A
,如下所示:
id full_name
1 ABC Ltd.
2 NY BCD Ltd.
3 SH ZY Ltd.
4 Soho Company
另一个数据框B
:
name id
ABC
NY BCD
SH ZY
Soho
如果name
中的B
在full_name
中,则II想将id
的值从数据帧A
到id
的位置B
。
如何在Python中做到这一点?谢谢。
答案 0 :(得分:1)
如何通过模糊查找实现这种灵魂?
import pandas as pd
import difflib
df1 = pd.DataFrame({"id": [1, 2, 3, 4], "full_name": ["ABC Ltd.", "NY BCD Ltd.", "SH ZY Ltd.", "Soho Company"]})
df2 = pd.DataFrame({"name": ["ABC", "SH ZY", "NY BCD", "Soho"]})
df2["full_name"] = df2["name"].map(lambda x: difflib.get_close_matches(x, df1["full_name"], cutoff=0.5)[0])
df2 = pd.merge(df2, df1, how="left", on="full_name")
查找将查找紧密匹配项并返回第一个值,仅当至少50%的字符串匹配时才给出mathc。
df2的end_result看起来像这样:
name full_name id
0 ABC ABC Ltd. 1
1 SH ZY SH ZY Ltd. 3
2 NY BCD NY BCD Ltd. 2
3 Soho Soho Company 4