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

如何用Python合并两个Excel工作表?现有代码无法正常运行

合并Excel工作表的问题排查与解决

问题场景

Sheet1包含列:Date、Code、time,Sheet2包含列:Date、time、temp、dew,目标是按日期时间匹配合并两个表,但以下代码无法正常运行:

原代码

df1['Datetime'] = pd.to_datetime(df1['Date'] + ' ' + df1['time'])
df2['Datetime'] = pd.to_datetime(df2['Date'] + ' ' + df2['time'])
merged_df = pd.merge(df1, df2, on='Date', how='left')
merged_df = merged_df[merged_df['Datetime_y'] > merged_df['Datetime_x']]

问题排查

  • 合并键错误:仅按Date列合并会导致同一日期下的所有行两两匹配,产生大量冗余数据,后续用Datetime_y > Datetime_x筛选的逻辑完全偏离“匹配对应时间记录”的需求。
  • 时间匹配逻辑混乱:没有针对日期时间做精准匹配,反而用大于号筛选,无法实现预期的合并效果。
  • 潜在格式风险:如果Date或time格式不规范,pd.to_datetime可能解析失败,直接导致后续操作报错。

修正方案

方案1:按合并后的Datetime列精准匹配

import pandas as pd

# 读取工作表
df1 = pd.read_excel('your_file.xlsx', sheet_name='Sheet1')
df2 = pd.read_excel('your_file.xlsx', sheet_name='Sheet2')

# 生成Datetime列,加入格式错误处理
df1['Datetime'] = pd.to_datetime(df1['Date'] + ' ' + df1['time'], errors='coerce')
df2['Datetime'] = pd.to_datetime(df2['Date'] + ' ' + df2['time'], errors='coerce')

# 按Datetime左合并,保留df1所有记录并匹配对应时间的数据
merged_df = pd.merge(df1, df2, on='Datetime', how='left')

# 清理冗余列并重命名(可选)
merged_df = merged_df.drop(columns=['Date_y', 'time_y'])
merged_df = merged_df.rename(columns={'Date_x': 'Date', 'time_x': 'time'})

方案2:直接按Date+time双列合并

如果不需要生成Datetime列,可直接用两列作为合并键:

import pandas as pd

df1 = pd.read_excel('your_file.xlsx', sheet_name='Sheet1')
df2 = pd.read_excel('your_file.xlsx', sheet_name='Sheet2')

# 同时按Date和time匹配,确保每一行的日期时间精准对应
merged_df = pd.merge(df1, df2, on=['Date', 'time'], how='left')

关键说明

  • errors='coerce'参数会将解析失败的日期时间转为NaT,避免因格式问题导致程序崩溃。
  • 左合并(how='left')会保留df1的所有记录,匹配不到的temp和dew字段会显示为NaN,符合常规合并需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 08:47:09