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

使用Python Pandas格式化CSV:实现每8行数据合并为同一行

问题说明

待修复CSV文件设计为8列结构,但原始数据中每个字段单独占一行。已完成每行末尾追加逗号的操作,需要实现每8行合并为1行的效果,最终输出字段1,字段2,字段3,字段4,字段5,字段6,字段7,字段8格式的标准CSV。
原有代码仅完成了单行追加逗号的逻辑,未做按固定行数分组拼接的处理,直接调用pandas读取会将所有行识别为单列数据,无法达成需求。

实现代码

方案1:原生Python实现(无第三方依赖,推荐)

不需要依赖pandas,直接按行分组处理即可,逻辑可控不会出现CSV解析异常:

# 配置项
INPUT_FILE = "file.txt"
OUTPUT_FILE = "Exported.csv"
COLUMN_COUNT = 8  # 每8个字段合并为一行

# 读取并预处理原始行
with open(INPUT_FILE, "r", encoding="utf-8") as f:
    # 过滤空行,移除每行首尾空白、多余的末尾逗号
    fields = [line.strip().rstrip(",") for line in f if line.strip()]

# 按固定列数分组拼接
merged_lines = []
for idx in range(0, len(fields), COLUMN_COUNT):
    row = ",".join(fields[idx:idx+COLUMN_COUNT])
    merged_lines.append(row)

# 写入结果文件
with open(OUTPUT_FILE, "w", encoding="utf-8") as f:
    # 若需要添加表头,解开下一行注释替换为实际列名即可
    # f.write("列1,列2,列3,列4,列5,列6,列7,列8\n")
    for line in merged_lines:
        f.write(f"{line}\n")

方案2:Pandas实现

如果后续需要做数据处理,可以直接在内存中把一维字段列表转为二维表结构再导出,不需要提前把逗号写回原文件:

import pandas as pd

INPUT_FILE = "file.txt"
OUTPUT_FILE = "Exported.csv"
COLUMN_COUNT = 8

with open(INPUT_FILE, "r", encoding="utf-8") as f:
    fields = [line.strip().rstrip(",") for line in f if line.strip()]

# 按8个字段一组切分为二维结构
table_data = []
for idx in range(0, len(fields), COLUMN_COUNT):
    table_data.append(fields[idx:idx+COLUMN_COUNT])

# 导出为CSV,不需要表头就把header参数设为False
df = pd.DataFrame(table_data)
df.to_csv(OUTPUT_FILE, index=False, header=False)
注意事项
  • 运行前备份原始输入文件,避免覆盖导致数据丢失
  • 编码参数根据文件实际编码调整,常见可选值为utf-8、utf-8-sig、gbk,匹配错误会出现乱码
  • 代码自动兼容末尾分组不足8个字段的场景,不会丢失尾部数据
  • 如果需要输出标准带表头的CSV,直接在写入时追加表头行,或给Pandas的columns参数传入列名列表即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 23:48:39