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

嵌套字典转CSV:多表导出报错及解决方案咨询

问题修复方案

错误原因

你调用pd.DataFrame.to_csv()时未传入文件名参数,该方法默认会返回CSV格式的字符串,而非直接保存文件。你误将返回的字符串当作文件名使用,导致系统把CSV内容识别为无效的文件路径,从而抛出Errno 22错误。

分表导出CSV

以下代码可将每个表单独导出为CSV文件,自动处理扁平行数据的拆分:

import pandas as pd

# 替换为你的原始数据字典
data_dict = {
    'Numero contatti creati': [
        ['brand', 'count', 'countLastMonth'],
        ['app IO', '1', '0', 'pagoPA', '2', '0']
    ],
    'Risposte totali': [
        ['Field', 'Responses'],
        ['Data registrata', '2']
    ]
}

for table_name, table_data in data_dict.items():
    # 获取列标题与列数
    columns = table_data[0]
    num_cols = len(columns)
    # 将扁平的行数据拆分为多行
    row_list = table_data[1]
    rows = [row_list[i:i+num_cols] for i in range(0, len(row_list), num_cols)]
    
    # 生成DataFrame并保存
    df = pd.DataFrame(rows, columns=columns)
    # 处理文件名,避免特殊字符导致路径错误
    filename = f"{table_name.replace(' ', '_')}.csv"
    df.to_csv(filename, index=False)

合并为单个CSV

若需要将所有表合并到一个CSV文件中,可添加table_name列区分数据所属表:

import pandas as pd

data_dict = {
    'Numero contatti creati': [
        ['brand', 'count', 'countLastMonth'],
        ['app IO', '1', '0', 'pagoPA', '2', '0']
    ],
    'Risposte totali': [
        ['Field', 'Responses'],
        ['Data registrata', '2']
    ]
}

combined_dfs = []
for table_name, table_data in data_dict.items():
    columns = table_data[0]
    num_cols = len(columns)
    row_list = table_data[1]
    rows = [row_list[i:i+num_cols] for i in range(0, len(row_list), num_cols)]
    
    df = pd.DataFrame(rows, columns=columns)
    df['table_name'] = table_name  # 添加表名标识列
    combined_dfs.append(df)

# 合并所有表并保存
final_df = pd.concat(combined_dfs, ignore_index=True)
final_df.to_csv('combined_tables.csv', index=False)

关键修复点

  • 调用to_csv()时必须传入文件名参数,例如to_csv('output.csv'),而非直接调用to_csv();
  • 动态获取列数(len(columns))替代手动指定列数,提升代码通用性;
  • 添加index=False参数,避免保存pandas默认的索引列,让CSV输出更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 23:03:25