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

如何用Python Pandas按ID匹配跨表复制粘贴指定列(非标准表结构)

Pandas实现Excel表按id匹配填充数据

处理步骤及代码

1. 读取并整理第一个规范数据表

第一个表结构正常,直接读取后保留需要的匹配、填充列即可:

import pandas as pd

# 读取第一个工作表,文件名和表名请按实际情况替换
df1 = pd.read_excel('data1.xlsx', sheet_name='Sheet1')
# 只保留用于匹配的id列和需要填充的A、C列
df1 = df1[['id', 'A', 'C']]

2. 读取并修复第二个格式混乱的数据表

第二个表存在冗余说明行、表头错位问题,先把结构理顺:

# 读取第二个工作表,暂不设置表头,保留所有行
df2_raw = pd.read_excel('data2.xlsx', sheet_name='Sheet2', header=None)

# 提取前2行的冗余说明文本(最终要保留的顶部内容)
header_text = df2_raw.iloc[:2]

# 从第3行(索引为2)开始作为有效数据区,将该行设为列名
df2 = df2_raw.iloc[2:]
df2.columns = df2.iloc[0]
# 移除作为表头的行,重置索引
df2 = df2[1:].reset_index(drop=True)

# 将id列转为数值类型,确保匹配时类型一致
df2['id'] = pd.to_numeric(df2['id'], errors='coerce').dropna()

3. 按id匹配填充数据

通过merge方法关联两个表,将第一个表的A、C列数据填充到第二个表对应位置:

# 按id左连接,保留第二个表的所有行,匹配第一个表的A、C数据
merged_df = df2.merge(df1, on='id', how='left', suffixes=('', '_from_df1'))

# 替换原表的A、C列内容
merged_df['A'] = merged_df['A_from_df1']
merged_df['C'] = merged_df['C_from_df1']
# 删除临时生成的冗余列
merged_df = merged_df.drop(columns=['A_from_df1', 'C_from_df1'])

4. 恢复原格式并保存结果

把之前提取的冗余说明行和处理好的数据拼接,还原目标格式后保存:

# 拼接顶部说明行和填充后的数据
final_result = pd.concat([header_text, merged_df], ignore_index=True)

# 保存为Excel文件,文件名按需修改
final_result.to_excel('filled_result.xlsx', index=False, header=False)

补充说明

  • 代码中的文件名、工作表名称请根据实际文件调整
  • 处理第二个表时,重点是先剥离冗余内容、修正表头,确保id列类型正确,才能顺利匹配
  • 左连接会保留第二个表的所有id行,若存在未匹配到的id,对应A、C列会显示空值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 17:05:27