小编CAR*_*ERL的帖子

Pandas:在一列上近似连接,在其他列上完全匹配

我有两个 Pandas 数据框,我想在多列(比如 3)和大约(即最近的邻居)上的一个(日期)列上加入/合并。我也想返回它们之间的差异(天)。每个数据集大约有 50,000 行长。我对内连接最感兴趣,但“剩菜”也很有趣,如果不是太难掌握的话。大多数“完全匹配”观察结果将在每个数据框中多次出现。

我一直在尝试使用difflib.get_close_matches将它们全部连接为字符串(这很愚蠢,我知道!)但并不总是给出完全匹配。我想我需要先循环精确匹配,然后在该组中找到最近的匹配,但我似乎无法正确...

数据框看起来像:

df1 = pd.DataFrame({'index': ['a1','a2','a3','a4'], 'col1': ['1232','432','432','123'], 'col2': ['asd','dsa12','dsa12','asd2'], 'col3': ['1','2','2','3'], 'date': ['2010-01-23','2016-05-20','2010-06-20','2008-10-21'],}).set_index('index')

df1
Out[430]: 
       col1   col2 col3        date
index                              
a1     1232    asd    1  2010-01-23
a2      432  dsa12    2  2016-05-20
a3      432  dsa12    2  2010-06-20
a4      123   asd2    3  2008-10-21

df2 = pd.DataFrame({'index': ['b1','b2','b3','b4'], 'col1': ['132','432','432','123'], 'col2': ['asd','dsa12','dsa12','sd2'], 'col3': ['1','2','2','3'], 'date': ['2010-01-23','2016-05-23','2010-06-10','2008-10-21'],}).set_index('index')

df2
Out[434]: 
      col1   col2 col3        date
index                             
b1     132    asd    1  2010-01-23
b2     432  dsa12    2  2016-05-23
b3     432 …
Run Code Online (Sandbox Code Playgroud)

python merge nearest-neighbor exact-match pandas

5
推荐指数
1
解决办法
2856
查看次数

标签 统计

exact-match ×1

merge ×1

nearest-neighbor ×1

pandas ×1

python ×1