如何使用Python匹配两个Excel表行数据,填充对应列值
实现步骤
1. 安装依赖库
执行以下命令安装处理Excel所需的库:pip install pandas openpyxl
2. 完整代码
import pandas as pd # 读取两个Excel文件,替换为你本地的实际文件路径 # sheet_name填工作表序号(从0开始计数)或工作表名称 df_excel1 = pd.read_excel("excel1.xlsx", sheet_name=0) df_excel2 = pd.read_excel("excel2.xlsx", sheet_name=0) # 构建标签和数值的映射字典 label_value_map = dict(zip(df_excel2["Network Label"], df_excel2["Value"])) # 按标签匹配填充Amount列 df_excel1["Amount"] = df_excel1["Group Summary Label"].map(label_value_map) # 导出结果到新文件,不覆盖原文件避免数据丢失 df_excel1.to_excel("已填充的excel1.xlsx", index=False, engine="openpyxl")
3. 代码说明
- pandas是常用的表格数据处理库,openpyxl是用来读写xlsx格式文件的依赖
- 先把两个Excel的内容读入内存中的表格结构(DataFrame)
- 把Excel2的标签和对应值做成映射字典,匹配时直接查表效率很高
- map方法会自动根据
Group Summary Label的内容去字典里找对应值,赋值给Amount列 - 导出时index=False表示不把pandas自动生成的行序号导出到Excel里
注意事项
如果两个文件的标签内容存在大小写差异、前后有空格的情况,匹配会失败,你可以先对标签列做一下清洗再匹配,比如统一转小写、去掉首尾空格:
# 清洗标签列的示例 df_excel1["Group Summary Label"] = df_excel1["Group Summary Label"].str.strip().str.lower() df_excel2["Network Label"] = df_excel2["Network Label"].str.strip().str.lower()
内容的提问来源于stack exchange,提问作者Bobby
相关产品推荐
相关产品推荐

