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

Python处理JSON列数据后Pandas导出CSV仅输出单列问题咨询

问题原因和修复方案

问题原因

  • 循环内重复覆盖DataFrame:每次遍历res的行时,都会执行df=pd.DataFrame(s)直接覆盖之前的df对象,最终df只会保留最后一次循环生成的内容,所以打印和导出都只有少量数据。
  • 重复覆盖导出文件:在嵌套的enumerate(s)循环里反复调用df.to_csv('test.csv'),未指定追加模式,每次执行都会清空原有文件内容写入新内容,最终文件只剩最后一次写入的结果。
  • 列表转DataFrame时格式错误:s是split得到的一维列表,直接传入pd.DataFrame()时pandas会默认将每个元素作为行存储,所以只会生成1列(默认列名是0),不符合拆分为多列的需求。

修复代码

import pandas as pd
# 初始化空列表存储所有行记录
all_data = []

for row in res:
    result = ''.join(row[0])
    p = Payload(result)
    # 拆分words为列表
    words_list = p.words.split("|")
    # 组装单条记录,可按需调整保留的字段
    row_record = {
        "id": p.ID,
        "subject": p.subject
    }
    # 把拆分后的words逐个加入记录,字段名可自定义
    for idx, word in enumerate(words_list):
        row_record[f"word_{idx+1}"] = word
    all_data.append(row_record)

# 所有行处理完后统一生成DataFrame
df = pd.DataFrame(all_data)
# 统一导出csv,index=False取消导出默认的行号列
df.to_csv('test.csv', sep='\t', encoding='utf-8', index=False)

# 导出excel取消下方注释即可
# writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter')
# df.to_excel(writer, sheet_name='welcome', index=False)
# writer.close()

补充说明

如果不同行的words拆分后长度不固定,pandas会自动给缺失的位置填充NaN值,不会影响正常导出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 17:24:00