You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何依据Time与DayYear_Count列值合并两个DataFrame?

Pandas按多列匹配合并DataFrame并保留指定列

我有如下两个Pandas DataFrame:

df1:

DayYear_Count      Time
0                                           
2018-03-26 00:00:00             84  00:00:00
2018-03-26 01:00:00             84  01:00:00
2018-03-26 02:00:00             84  02:00:00
2018-03-26 03:00:00             84  03:00:00
2018-03-26 04:00:00             84  04:00:00

df2:

Time       Temp  DayYear_Count
0      00:00:00   6.065167             84
1      01:00:00   5.692167             84
2      02:00:00   5.151917             84
3      03:00:00   4.636500             84
4      04:00:00   4.277417             84

需求是将这两个DataFrame合并,要求按Time和DayYear_Count两列完全匹配,仅从df2中提取对应匹配行的Temp列数据,合并后保留df1的索引和原有列,最终预期效果示例如下:

DayYear_Count      Time     Temp  
0                                           
2018-03-26 00:00:00             84  00:00:00   6.065
2018-03-26 01:00:00             84  01:00:00   3.055
2018-03-26 02:00:00             84  02:00:00   NaN

解决方案

可以使用Pandas的merge()方法,指定合并键为Time和DayYear_Count,并设置合并方式为左连接(保留df1的所有行),最后按需整理列顺序:

import pandas as pd

# 执行合并
merged_df = pd.merge(df1, df2[['Time', 'DayYear_Count', 'Temp']], 
                    on=['Time', 'DayYear_Count'], 
                    how='left')

# 保留原df1的列顺序(可选操作)
merged_df = merged_df[['DayYear_Count', 'Time', 'Temp']]

# 查看合并结果
print(merged_df)

代码说明

  • on=['Time', 'DayYear_Count']:指定以这两列作为匹配依据,仅当两列值完全一致时才会匹配对应行
  • how='left':采用左连接逻辑,保留df1的全部行,若df2中无匹配项,Temp列会自动填充NaN
  • df2[['Time', 'DayYear_Count', 'Temp']]:提前筛选df2的必要列,避免合并后出现冗余列

内容的提问来源于stack exchange,提问作者Simone Panico

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 12:15:40