我正在處理兩個數據集,每個數據集都有不同的日期。我想合併它們,但由於日期不完全匹配,我相信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