我有两个大小不同的数据框:
df1:
id datetime
0 a1 1/1/2015
1 a1 2/1/2015
2 a1 3/1/2015
3 a2 1/1/2015
4 a2 2/1/2015
5 a3 2/1/2015
6 a3 3/1/2015
df2:
id datetime total cost
0 a1 1/1/2015 3
1 a1 2/1/2015 4
2 a1 3/1/2015 2.5
3 a2 1/1/2015 5
4 a2 2/1/2015 4
5 a2 3/1/2015 3
6 a3 1/1/2015 7
7 a3 2/1/2015 8
8 a3 3/1/2015 4
我想比较df1和df2,以便可以使用相应ID和日期时间的总费用值更新df1。所以我希望我的结果看起来像: df1:
id datetime totalcost
0 a1 1/1/2015 3
1 a1 2/1/2015 4
2 a1 3/1/2015 2.5
3 a2 1/1/2015 5
4 a2 2/1/2015 4
5 a3 2/1/2015 8
6 a3 3/1/2015 4
我尝试使用isin,但无法同时比较ID和日期时间列。除了for循环和逐行比较之外,还有什么优雅的方法吗?预先感谢
答案 0 :(得分:2)
您可以在2个按键上执行简单的merge
:
res = pd.merge(df1, df2, on=['id', 'datetime'])
print(res)
id datetime total
0 a1 1/1/2015 3.0
1 a1 2/1/2015 4.0
2 a1 3/1/2015 2.5
3 a2 1/1/2015 5.0
4 a2 2/1/2015 4.0
5 a3 2/1/2015 8.0
6 a3 3/1/2015 4.0