【发布时间】:2019-12-12 20:30:55
【问题描述】:
我有一个数据帧df_sample,其中包含 10 个已解析地址,我将它与另一个包含数十万已解析地址记录 df 的数据帧进行比较。 df_sample 和 df 共享完全相同的结构:
zip_code city state street_number street_name unit_number country
12345 FAKEVILLE FLORIDA 123 FAKE ST NaN US
我想要做的是将df_sample 中的一行与df 中的每一行匹配,从state 开始,并且只将fuzzy.ratio(df['state'], df_sample['state']) > 0.9 所在的行放入一个新的数据帧中。一旦从这些匹配中创建了这个新的、更小的数据框,我将继续为city、zip_code 等执行此操作。类似于:
df_match = df[fuzzy.ratio(df_sample['state'], df['state']) > 0.9]
除非那行不通。
我的目标是在每次使用更难的搜索条件时缩小匹配的数量,并最终在逐列缩小范围的基础上得到一个匹配尽可能少的数据框。但我不确定如何对任何单个记录执行此操作。
【问题讨论】:
-
交叉连接。我们正在查看大约几百万行数据,这应该是可能的。
-
@QuangHoang 在这种情况下我该怎么做?
标签: python pandas dataframe match fuzzywuzzy