Python 通过比较不同数据帧中的其他两列来连接列

Python 通过比较不同数据帧中的其他两列来连接列,python,pandas,dataframe,Python,Pandas,Dataframe,我有两个大小不同的数据帧: df1: id日期时间 0 a1 1/1/2015 1 a1 2015年1月2日 2 a1 2015年1月3日 3 a2 2015年1月1日 4 a2 2/1/2015 5 a3 2/1/2015 6 a3 3/1/2015 df2: 我想比较df1和df2,这样我就可以用相应id和datetime的总成本值更新df1。因此,我希望我的结果如下所示: df1: 我尝试使用isin,但无法同时比较id和日期时间列。除了for循环和逐行比较之外,还有什么优雅的方法可以做

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

df1:

id日期时间
0 a1 1/1/2015
1 a1 2015年1月2日
2 a1 2015年1月3日
3 a2 2015年1月1日
4 a2 2/1/2015
5 a3 2/1/2015
6 a3 3/1/2015
df2:

我想比较df1和df2,这样我就可以用相应id和datetime的总成本值更新df1。因此,我希望我的结果如下所示: df1:


我尝试使用isin,但无法同时比较id和日期时间列。除了for循环和逐行比较之外,还有什么优雅的方法可以做到这一点吗?提前感谢

您可以在两个键上进行简单的
合并

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

您可以在两个键上执行简单的
合并

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

谢谢你的解决方案。我已经发布了这些df作为示例,但我的真实数据集有更多的列,我只需要合并其中一个。我们可以指定需要合并的一个吗?一个技巧是通过获取数据帧的子集只合并列。例如,您需要的列是
x
y
。您可以这样做:
pd.merge(df1,df2[['id','datetime','x','y']],on=['id','datetime'])
EDIT:忘记添加键谢谢您的解决方案。我已经发布了这些df作为示例,但我的真实数据集有更多的列,我只需要合并其中一个。我们可以指定需要合并的一个吗?一个技巧是通过获取数据帧的子集只合并列。例如,您需要的列是
x
y
。您可以这样做:
pd.merge(df1,df2[['id','datetime','x','y']],on=['id','datetime'])
EDIT:忘记添加键
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