我有两个数据帧,每个数据帧大约有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.
首先,我建议执行
join
操作并识别每个数据帧中不完全匹配的行。确定这些行后,请排除其他行,并继续执行以下建议:一种方法是解析地址并尝试标准化 他们。你可以试着用 usaddress模块到 标准化你的地址。
您也可以尝试在回答this question时推荐的方法, 尽管他们可能会为你的案子做一些调整。很难说 没有多个部分字符串匹配的示例。
另一种方法是使用googlemapsapi(或Bing或API) MapQuest)进行地址标准化,尽管有超过百万行 每一个数据帧,你将远远超出剥离免费的API调用/天和 需要支付服务费。
最后一个建议是使用 fuzzywuzzy 模糊(近似)字符串匹配模块。
相关问题 更多 >
编程相关推荐