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

在Matplotlib场景下如何基于编号或名称合并两个Excel文件数据?

嘿,我来帮你搞定这个Pandas合并的问题!

你遇到的问题其实是因为pd.merge()默认用的是内连接(inner join),这种连接方式只会保留两个表中都存在匹配键的行——也就是第二个文件里那4个编号的数据,自然看不到第一个文件里全部1-50条记录啦。

要实现你想要的「保留第一个文件所有数据,匹配第二个文件对应条目」的效果,你需要用左连接(left join),具体操作步骤如下:

1. 先读取两个Excel文件

首先用pd.read_excel()把两个文件读成DataFrame:

import pandas as pd

# 替换成你的文件实际路径
df_full = pd.read_excel("第一个文件.xlsx")  # 包含No.1-50的全量数据
df_partial = pd.read_excel("第二个文件.xlsx")  # 仅包含No.5、9、10、20的数据

2. 按编号(No.)左连接合并

指定how="left"来保留左表(也就是全量数据的df_full)的所有行,同时匹配右表(df_partial)的对应数据:

# 按No.列进行左连接
merged_df = pd.merge(df_full, df_partial, on="No.", how="left")

这样合并后,df_full里的50条记录都会保留:

  • 编号5、9、10、20的行会自动填充第二个文件里的Average、highestvalue、lowerValue数据;
  • 其他编号的这些列会显示为NaN(表示没有匹配到对应数据),完全符合你的需求。

3. (可选)按名称(Name)合并

如果你的场景是想用Name作为匹配键(比如第一个文件的Name和第二个文件的No.存在对应关系,比如Name是"Item_5"对应No.5),可以先处理Name列提取匹配值,再用left_on和right_on指定匹配列:

# 从df_full的Name列提取数字(比如从"Item_5"中取出5)
df_full["matched_no"] = df_full["Name"].str.extract(r'(\d+)').astype(int)

# 用提取出的编号和df_partial的No.合并
merged_df = pd.merge(df_full, df_partial, left_on="matched_no", right_on="No.", how="left")

4. 保存合并结果

最后可以把合并好的数据导出到新的Excel文件:

merged_df.to_excel("合并后的数据.xlsx", index=False)

内容的提问来源于stack exchange,提问作者Rubicelia Patlán

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:31:23