Python读取Excel如何拆分单列含多个引用值的行数据
Python实现Excel多引用值拆分为多行方案
核心思路:读取Excel数据后,将References列的多引用值拆分为列表,再通过explode方法将列表元素拆为独立行,其余列自动保留原行数值;如果需要严格遵循逐行处理逻辑,也可通过遍历行的方式实现。
前置依赖安装
先安装处理Excel需要的第三方库:
pip install pandas openpyxl
高效实现版本(推荐)
基于pandas内置方法实现,处理大文件速度更快:
import pandas as pd # 读取原始Excel文件,替换为实际文件路径,sheet_name指定目标工作表 df = pd.read_excel("你的原始数据.xlsx", sheet_name="Sheet1") # 拆分References列多值,默认适配逗号、分号、空格、顿号作为分隔符,自动过滤空值和多余空格 df["References"] = df["References"].apply( lambda x: [ref.strip() for ref in str(x).replace(";", ",").replace(" ", ",").replace("、", ",").split(",") if ref.strip()] ) # 拆分为多行,重置索引 df_result = df.explode("References", ignore_index=True) # 结果预览与导出 print(df_result.to_string(index=False)) df_result.to_excel("拆分完成结果.xlsx", index=False)
逐行处理版本(完全匹配逐行拆分逻辑)
严格按照「处理完当前行所有引用拆分,再处理下一行」的逻辑编写,流程更直观:
import pandas as pd df = pd.read_excel("你的原始数据.xlsx", sheet_name="Sheet1") result = [] for _, row in df.iterrows(): # 拆分当前行的所有引用值 ref_list = [ ref.strip() for ref in str(row["References"]).replace(";", ",").replace(" ", ",").split(",") if ref.strip() ] # 每个引用对应生成一行,其余字段完全复用原行值 for single_ref in ref_list: current_row = row.to_dict() current_row["References"] = single_ref result.append(current_row) # 转换为结构化数据,预览+导出 df_result = pd.DataFrame(result) print(df_result.to_string(index=False)) df_result.to_excel("拆分完成结果.xlsx", index=False)
适配说明
- 若
References列多值使用其他特殊分隔符,只需在拆分逻辑中添加对应的替换规则,或直接在split()方法中传入实际分隔符即可,例如固定使用竖线分隔可直接写str(x).split("|") - 代码自动过滤引用值前后多余空格、拆分产生的空字符串,不会生成带空引用的无效行
- 输出列顺序与原文件完全一致,
Date/ID/Amount/Weight等非拆分列数值与原行完全匹配,和预期输出格式对齐
内容的提问来源于stack exchange,提问作者ignore_gravity
相关产品推荐
相关产品推荐

