如何基于Part Name匹配大小数据集Sheet并生成指定合并表?
问题
如何基于首列公共条目(Part Name/Part Number),从大数据集Sheet中提取对应数据匹配到小数据集Sheet,生成包含小数据集全部列+大数据集指定列的结果?
现有两张Sheet:
- Sheet1:全量Part数据,列包括
Part Name、Sequence、Due Date、quantity - Sheet2:Part子集(列名
Part Number与Sheet1的Part Name对应),其余列包括Issue、error、quality、supervisor、Line No. - 需求:将Sheet2中每个Part匹配Sheet1的
Sequence、Due Date、quantity,生成合并后的数据集,兼容两边存在互不存在Part的情况(不匹配的字段留空)
解决方案:Python Pandas实现
Pandas适合处理数千条规模的表格数据,通过**左连接(Left Join)**可以高效完成匹配需求,步骤如下:
1. 安装依赖(若未安装)
pip install pandas openpyxl
2. 代码实现
import pandas as pd # 读取Excel中的两个Sheet(替换为你的实际文件名) df_sheet1 = pd.read_excel("parts_data.xlsx", sheet_name="Sheet1") df_sheet2 = pd.read_excel("parts_data.xlsx", sheet_name="Sheet2") # 重命名Sheet1的Part Name列,与Sheet2的Part Number统一列名,便于匹配 df_sheet1 = df_sheet1.rename(columns={"Part Name": "Part Number"}) # 执行左连接:保留Sheet2所有行,匹配Sheet1的指定字段 merged_df = pd.merge( df_sheet2, df_sheet1[["Part Number", "Sequence", "Due Date", "quantity"]], on="Part Number", how="left" ) # 将NaN替换为空字符串(可选,根据需求调整) merged_df = merged_df.fillna("") # 输出结果到新Excel文件 merged_df.to_excel("merged_parts_result.xlsx", sheet_name="Merged Data", index=False) # 打印结果验证 print(merged_df)
3. 关键说明
- 左连接(how="left"):确保Sheet2的所有行都被保留,Sheet1中不存在的Part对应的字段会自动留空(或显示
NaN,可通过fillna("")转为空字符串) - 代码仅匹配需要的
Sequence、Due Date、quantity三列,避免冗余数据 - 处理数千条数据时,Pandas的效率远高于手动公式匹配
期望输出结果
| Part Number | Issue | error | quality | supervisor | Line No. | Sequence | Due Date | quantity |
|---|---|---|---|---|---|---|---|---|
| Z6 | 1 | 0.029408618 | OK | AB | 12 | 1 | 16-Mar | 97 |
| 907 | 2 | 0.061354664 | OK | AB | 23 | 3 | 23-Mar | 51 |
| B1 | 2 | 0.209159753 | OK | AD | 23 | 2 | 26-Mar | 95 |
| O12 | 1.5 | 0.862573414 | UI | AD | 24 | 4 | 29-Mar | 28 |
| ACF | 2 | 0.403823252 | OK | GY | 15 | 4 | 20-Mar | 70 |
| A1 | 3 | 0.452562474 | OK | NP | 7 | 1 | 11-Mar | 88 |
| H69 | 1 | 0.327276608 | OK | TV | 8 |
内容的提问来源于stack exchange,提问作者Aryan
相关产品推荐
相关产品推荐

