两个 pandas 数据帧之间的最大匹配
假设我们有两个数据范围。
原始_data
sequence_number | fixed_criteria | fuzzy_criteria |
---|---|---|
1 | a | 10.42 |
2 | b | 1.27 |
3 | b | 6.32 |
4 | a | 5.91 |
jumbled_data
sequence_number | field_criteria fuzzy_criteria | fuzzy_criteria |
---|---|---|
11 | b | 6.43 |
12 | 12 b | b 6.43 |
1.26 13 | a | 9.98 |
14 A 9.98 14 | A | 15 a 6.0.84 |
15 | a | 6.0.84 15 |
15.84 它们之间的对应关系为1-1。匹配最大化匹配的大小,并最大程度地减少fuzzy_criteria的差异。 将为
sequence_number_original | fuzzy_criteria_original | fixed_criteria | fuzzy_criteria_jumbled | sequence_number_jumbled | fuzz_diff |
---|---|---|---|---|---|
1 | 10.42 | a | 9.98 | 一个 | IE |
需要 | 匹配 | | | | |
| | | | | |
| | | | | |
最大匹配考虑以下示例:
ointer_data
sequence_number | fixed_criteria | fuzzy_criteria |
---|---|---|
1 | a | 1 |
2 a 2 | a | 2 a 2 |
jumbled_data
sequence_number | fuzzy_criteria fuzzy_criteria | 13 |
---|---|---|
a | 1.9 a | a |
14 | a | a 2.9 |
2.9 criteria_jumbled
2 | fuzzy_criteria | fired_criteria | fuzzy_criteria | sequence_number_jumbled | fuzz_diff |
---|---|---|---|---|---|
2 | 1.9 | a | 1.9 | 13 | 0.1 |
1 | 1 | a | 1.9 | 13 | 0.9 |
2 | 2 | a | 2.9 | 14 | 0.9 |
1 | 1 | a | 2.9 | 14 | 1.9 |
then removing duplicates in sequence_number_original would provide the following
sequence_number_original | fuzzy_criteria_original | fixed_criteria | fuzzy_criteria_jumbled | sequence_number_jumbled | fuzz_diff |
---|---|---|---|---|---|
2 | 2 | a | 1.9 | 13 | 0.1 |
1 | 1 | a | 1.9 | 13 | 0.9 |
then in sequence_number_jumbled
sequence_number_original | fuzzy_criteria_original | fixed_criteria | fuzzy_criteria_jumbled | sequence_number_jumbled | fuzz_diff |
---|---|---|---|---|---|
2 | 2 | a | 1.9 | 13 | 0.1 |
同样,相反的方式也会做同样的方法。 sequence_number_jumbled
ia | fuzzy_criteria_jumbled | 2 | sequence_number_jumbled | 第 | fuzz_diff |
---|---|---|---|---|---|
2 | 但这 | , | 1.9 | ... | 0.1 |
不是 | 最大 | a | | 13 | |
一个
的 | | | | | |
---|---|---|---|---|---|
| | | | | |
:
sequence_number_original | fuzzy_criteria_original | fixed_criteria | fuzzy_criteria_jumbled | sequence_number_jumbled | fuzz_diff |
---|---|---|---|---|---|
1 1 | 1 | a | 1.9 | 13 | 0.9 |
2 a 2.9 2 | a 2.9 2 | a | 2.9 | 14 | 0.9 |
最大程度地匹配图表中的算法。实际上,我确实只是看到 a>与我的类似。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果两个
fuzzy_criteria
列上都没有重复的值。您可以创建一个辅助数据框来确定两个fuzzy_criteria
列之间最接近的值。然后使用这个辅助数据框分别合并这两个数据框,最后根据辅助数据框列合并合并的数据框。
If there are no duplicated values on both
fuzzy_criteria
columns. You can create an auxiliary dataframe to determine the nearest value between twofuzzy_criteria
columns.Then use this auxiliary dataframe to merge these two dataframe separately and finally merge the merged dataframes based on auxiliary dataframe columns.
这很大程度上从@spghtcd的答案中复制到
想法是使用NetworkX执行最大匹配。
This is largely copied from @SpghttCd answer to How to get the most pairs out of my pandas dataframe?
The idea is to use networkx to perform a maximal matching.