熊猫连接并填充最近出现的事件



我有以下数据帧:

DF1:

key | col1 | col2
1     13     a
1     15     b
1     18     c
...   ...    ...

DF2:

key | col1
1     14
1     15
1     19
...

我想用DF1中的col2填充DF2,使用键:["key", "col1"]。如果DF1.col1DF2.col1不匹配,我想找到DF1.col1中最后出现的比DF2.col1小的。

所以期望的输出是:

DF2:

key | col1 | col2
1     14     a # Not exact match, so it will take DF1.col1 = 13
1     15     b
1     19     c # Not exact match, so it will take DF1.col1 = 18
...   ...    ...

使用传统的与pandas合并,如果没有匹配,则返回None:

result = pd.merge(DF1, DF2, how="right", on=["key", "col1"])

结果:

key | col1 | col2
1     14    None
1     15     b
1     19    None
...   ...    ...

您可以使用pd.merge_asof:

print (pd.merge_asof(df2, df1, on="col1", by="key"))
key  col1 col2
0    1    14    a
1    1    15    b
2    1    19    c

注意这需要对两个dfs上的col1进行排序。

相关内容

  • 没有找到相关文章

最新更新