使用部分字符串匹配在两个数据帧之间映射/压缩

2024-04-23 20:32:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个数据帧,每个数据帧大约有1000000行。两者共享一个公共的“Address”列,我正在使用该列连接数据帧。使用这个连接,我希望将信息从dataframe1移动到dataframe2,我称之为“details”。你知道吗

df2.details = df2.Address.map(dict(zip(df1.Address,df1.details)))

但是,address列并没有表现出完全的公共性。我尽可能地清理,但仍然只能移动大约40%的数据。有没有办法修改我上面的代码以允许部分匹配?我完全被这个难住了。你知道吗

数据非常简单。两个小数据帧。制作的样本数据如下:

df1 
Address                                    Details
Apt 15 A, Long Street, Fake town, US       A   


df2
Address                                    Details
15A, Long Street, Fake town, U.S.              

Tags: 数据信息streetmapaddressdetailsdictfake
1条回答
网友
1楼 · 发布于 2024-04-23 20:32:22

首先,我建议执行join操作并识别每个数据帧中不完全匹配的行。确定这些行后,请排除其他行,并继续执行以下建议:

  • 一种方法是解析地址并尝试标准化 他们。你可以试着用 usaddress模块到 标准化你的地址。

  • 您也可以尝试在回答this question时推荐的方法, 尽管他们可能会为你的案子做一些调整。很难说 没有多个部分字符串匹配的示例。

  • 另一种方法是使用googlemapsapi(或Bing或API) MapQuest)进行地址标准化,尽管有超过百万行 每一个数据帧,你将远远超出剥离免费的API调用/天和 需要支付服务费。

  • 最后一个建议是使用 fuzzywuzzy 模糊(近似)字符串匹配模块。

相关问题 更多 >