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

Python中有没有快速实现csv单元格按换行拆分合并、按列分组的方法

单元格换行拆分与合并高效实现方案

你现有实现用了逐行循环的写法,数据量大时性能较低,可直接用pandas内置的向量化方法实现,同时支持双向操作:

正向拆分(带换行的单元格拆分为多行)

利用str.splitlines将单元格内容转为列表,再用explode方法将列表拆分为独立行,Column3会自动按对应行数重复,无需手动处理:

import pandas as pd

# 读取原始CSV
df = pd.read_csv('Test1.csv')
# 新增分组ID,避免反向合并时因Column3重复出现合并错误,若Column3全局唯一可省略该行
df['group_id'] = df.index
# 将需要拆分的列按换行符转为列表
df[['Column1', 'Column2']] = df[['Column1', 'Column2']].apply(lambda col: col.str.splitlines())
# 同时炸开两列,生成目标格式
df_split = df.explode(['Column1', 'Column2'], ignore_index=True)
# 导出拆分结果
df_split.to_csv('Test1_split.csv', index=False)

反向合并(多行合并为带换行的单元格)

按分组ID(或Column3)分组后,用\n拼接Column1和Column2的内容即可还原原始格式:

# 读取拆分后的CSV
df_split = pd.read_csv('Test1_split.csv')
# 按分组聚合,还原带换行的单元格
df_merged = df_split.groupby('group_id', as_index=False).agg(
    Column1 = ('Column1', '\n'.join),
    Column2 = ('Column2', '\n'.join),
    Column3 = ('Column3', 'first')
)
# 可选:删除新增的group_id列
df_merged = df_merged.drop('group_id', axis=1)
# 导出合并结果
df_merged.to_csv('Test1_merged.csv', index=False)

注意事项

  • 上述实现默认你提到的「Column1和Column2单元格换行数量始终一致」的前提,无需额外做长度校验
  • 若使用低于1.3.0版本的pandas,不支持同时explode多列,可分开两次调用explode方法:先炸Column1再炸Column2,效果完全一致
  • 若确认Column3值全局唯一,可省略group_id字段,直接按Column3分组即可

内容的提问来源于stack exchange,提问作者Blckster

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:15:04