通过比较不同数据帧中的其他两个列来加入一列

时间:2019-10-11 23:28:52

标签: python pandas dataframe

我有两个大小不同的数据框:

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循环和逐行比较之外,还有什么优雅的方法吗?预先感谢

1 个答案:

答案 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