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

Python将列表写入CSV时多列数据合并至单格问题求助

问题原因
  1. csv.writer的writerow()方法接收的列表参数中,每个元素对应CSV一行中的一个单元格。如果传入的列表元素是包含多个值的子列表,会被整体识别为单个单元格的内容,因此出现多值挤在同一个单元格的问题。
  2. 你的数据是按列存储的结构,而CSV写入默认是按行写入,需要先完成行列转置再写入。
解决代码

首先确认你的原始计算结果为如下按列存储的结构(即每个子列表对应一列的所有数据):

# 示例原始数据:共5列,每列5条数据
col_data = [
    [0.002, 0.001905, 0.001814, 0.001726, 0.00164], # A列数据
    [0, 0.001814, 0.00173, 0.001648, 0.00157], # B列数据
    [0, 0, 0.001649, 0.00157, 0.001495], # C列数据
    [0, 0, 0, 0.001495, 0.001424], # D列数据
    [0, 0, 0, 0, 0.001356] # E列数据
]

修改后的写入代码如下:

import csv

# 替换为你自己的计算得到的列存储数据
col_data = []

# 完成行列转置,得到按行存储的结构,每个子列表对应CSV的一行
row_data = list(zip(*col_data))

# 打开文件时添加newline参数避免多余空行
with open("/home/Documents/test.csv", "a", newline="") as fp:
    wr = csv.writer(fp, dialect='excel')
    # 一次性写入所有行
    wr.writerows(row_data)
补充说明
  • 如果你需要添加表头,可在调用writerows()之前新增一行代码:wr.writerow(["A列", "B列", "C列", "D列", "E列"]),替换为你自己的列名即可
  • 确保传入writerow/writerows的子列表中所有元素都是单个数值/字符串,而非嵌套的列表/数组,即可保证每个值写入单独的单元格
  • 如果是在Windows系统下使用Excel打开CSV出现乱码,可以将打开文件的编码设置为encoding="utf-8-sig"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 16:45:01