我正在处理两个数据集,每个数据集都有不同的日期。我想合并它们,但由于日期不完全匹配,我相信merge_asof()
是最好的方法。熊猫:merge_asof()总计多行/不重复
然而,两件事情发生了merge_asof()
是不理想:
- 编号重复。
- 数字丢失。
下面的代码是一个例子:
df_a = pd.DataFrame({'date':pd.to_datetime(['1/15/2016','3/15/2016','5/15/2016','7/15/2016'])})
df_b = pd.DataFrame({'date':pd.to_datetime(['1/1/2016','4/1/2016','5/1/2016','6/1/2016','7/1/2016']), 'num':[1,10,100,1000,10000]})
df_x = pd.merge_asof(df_a, df_b, on = 'date')
这产生了:
date num
0 2016-01-15 1
1 2016-03-15 1
2 2016-05-15 100
3 2016-07-15 10000
,而是我会想:
date num
0 2016-01-15 1
1 2016-03-15 0
2 2016-05-15 110
3 2016-07-15 11000
...其中多套的落在日期之间的行将被累加起来,而不仅仅是最接近的行选择。
这可能与merge_asof()
或我应该寻找另一种解决方案?
嗨斯蒂芬,感谢您的改进。基本上我花了整整一天的时间来解决这个问题,但我仍然不满意。我向上提出了你的答案,但我还没有将它标记为“答案” - 我想看看其他人是否有更简洁的方法来解决这个问题。 – pshep123