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

如何用Python拆分Excel多行单元格为独立行?

解决Excel单元格含换行时按对应行拆分并避免重复行的问题

问题背景

需要处理Excel表格:当Col 3单元格包含换行/回车时,将整行拆分为多行。要求:

  • Col 1、Col 2保持单行内容,复制到所有拆分后的新行
  • Col 3至Col 8的单元格内换行行数一致,需按对应位置拆分,同时清理多余引号和空换行

原代码使用explode后出现大量重复行(50行变为1500行),原因是循环逐个列执行explode,每一次explode都会将现有行再次拆分,导致行数以乘积形式增长。


解决方案

核心思路:先将所有需要拆分的列(Col 3至Col 8)统一处理成等长的列表,再一次性对这些列执行explode,确保拆分后的行一一对应,不会产生重复。

具体代码

import pandas as pd

# 读取原始Excel数据
data = pd.read_excel('Output\\spreadSheet.xlsx')

# 定义需要拆分的列(从Col3到Col8,按列索引定位)
split_columns = data.columns[2:]

# 统一处理所有目标列:清理引号、按换行分割、去除元素空白
for col in split_columns:
    # 转字符串→移除前后引号→按换行分割为列表
    data[col] = data[col].astype(str).str.strip('"').str.split('\n')
    # 清理列表中每个元素的前后空白
    data[col] = data[col].apply(lambda x: [item.strip() for item in x])

# 确保所有拆分后的列表长度一致(取最长长度,不足的补空字符串)
max_row_count = data[split_columns].apply(lambda x: x.str.len()).max().max()
for col in split_columns:
    data[col] = data[col].apply(lambda x: x + [''] * (max_row_count - len(x)))

# 一次性对所有目标列执行explode,保证行对应关系
data = data.explode(split_columns.tolist(), ignore_index=True)

# 保存处理后的结果
data.to_excel('Output\\processed_spreadSheet.xlsx', index=False)

代码关键点说明

  1. 清理与分割:用str.strip('"')移除单元格前后的引号,str.split('\n')按换行分割成列表,确保拆分后的内容干净。
  2. 统一列表长度:补全短列表的空字符串,保证Col 3至Col 8的每个列表长度一致,避免explode时错位。
  3. 批量explode:pandas支持同时对多列执行explode,确保拆分后的行严格对应,不会产生重复。

内容的提问来源于stack exchange,提问作者Colton needs help

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 09:41:19