如何使用Pandas基于嵌套列表向Excel列写入匹配ID值
Pandas实现Excel食物名匹配写入对应ID
实现逻辑
不需要改动原表首尾无关列,仅通过食物名精确匹配,将对应ID写入同一行的ID列,全程保留原表结构、列顺序和其他列内容不变。
前置依赖安装(未安装的话先执行):
pip install pandas openpyxl
完整实现代码
import pandas as pd # 输入ID与食物名的映射嵌套列表 id_food_list = [['6737', 'Apple'], ['6733', 'Cheese'], ['6731', 'Tomatos']] # 转换为「食物名:ID」格式的字典,匹配效率远高于遍历嵌套列表 food_id_mapping = {food_name: food_id for food_id, food_name in id_food_list} # 读取原Excel文件,替换为实际本地文件路径 df = pd.read_excel("原表文件路径.xlsx", engine="openpyxl") # 列名替换为你表中实际的ID列名、食物列名即可完成匹配写入 # 示例:如果食物列列名为Food、ID列列名为ID,就写df["ID"] = df["Food"].map(food_id_mapping) df["替换为你的ID列实际列名"] = df["替换为你的食物列实际列名"].map(food_id_mapping) # 导出处理后的文件,index=False避免生成多余的索引列打乱原表结构 df.to_excel("处理完成的结果文件.xlsx", index=False, engine="openpyxl")
补充说明
- 所有未在映射列表里出现的食物名,对应ID列会自动留空,不会写入错误内容
- 如果存在食物名前后带空格、大小写不统一导致匹配失败的情况,可以在匹配前先清洗食物列数据,参考代码:
df["替换为你的食物列实际列名"] = df["替换为你的食物列实际列名"].str.strip().str.title() - 全程不会修改原表中不需要处理的其他列,导出的文件结构和原表完全一致,仅会填充匹配到的ID列内容
内容的提问来源于stack exchange,提问作者Spiliqueta
相关产品推荐
相关产品推荐

