Python中如何将多列字典数据导出为单个CSV文件?

我正尝试将数据导出为CSV文件,该数据包含15列、400行。在代码中,我为每一列分别存储了一个字典,希望将所有字典的数据整合到同一个CSV文件中。我曾尝试使用for循环实现此操作,但未能成功。
嘿,太懂你这种卡壳的感觉了!把15个对应不同列的字典整合成规范的CSV确实容易踩坑,尤其是循环没走通的时候。下面给你两种实用的解决方案,按需选就行:
方法一:用Pandas快速搞定(推荐)
如果你的环境里已经装了Pandas,这绝对是最省心的方式。核心思路是把每个列字典的数值提取成有序列表,再组合成DataFrame直接导出:
假设你的列字典是这样的结构(每个字典的键对应行号,值是该行的列数据):
# 示例:第一列的字典,键是行号0-399,值是对应数据 col1 = {0: "张三", 1: "李四", ..., 399: "王五"} col2 = {0: 25, 1: 30, ..., 399: 28} # ... 剩下13个对应其他列的字典
直接用下面的代码就能导出:
import pandas as pd # 把所有列整理成一个大字典,键是你想要的表头名称,值是对应列的有序数据列表 data = { "姓名": list(col1.values()), "年龄": list(col2.values()), # ... 依次添加剩下的13列,注意顺序要和你需要的CSV列顺序一致 } # 转换成DataFrame,自动对齐行数据 df = pd.DataFrame(data) # 导出CSV,index=False是去掉自动生成的行号,utf-8-sig避免中文乱码 df.to_csv("result.csv", index=False, encoding="utf-8-sig")
方法二:用Python原生csv模块(无需额外安装库)
如果不想依赖第三方库,用Python自带的csv模块也能实现。核心是遍历每一行,收集所有列对应行的数据再写入:
import csv # 把所有列字典按你想要的CSV列顺序放进列表 column_dicts = [col1, col2, ..., col15] # 对应每一列的表头名称,顺序要和上面的列表一致 column_names = ["姓名", "年龄", ..., "列15"] # 获取所有行号(假设所有字典的键都是0-399,且完全一致,排序后保证顺序正确) row_numbers = sorted(col1.keys()) # 打开文件写入CSV with open("result.csv", "w", newline="", encoding="utf-8-sig") as csv_file: # 初始化字典写入器,指定表头 writer = csv.DictWriter(csv_file, fieldnames=column_names) writer.writeheader() # 先写入表头 # 遍历每一行,收集对应所有列的数据 for row_id in row_numbers: row_data = {} for idx, col_dict in enumerate(column_dicts): row_data[column_names[idx]] = col_dict[row_id] writer.writerow(row_data)
几个关键注意点:
- 确保所有列字典的键(行标识)完全一致,不然会出现数据错位或者缺失的情况
- 如果你的行标识不是数字,只要所有字典的键集合相同,排序后遍历就没问题
- 导出时用
utf-8-sig编码,能避免Windows系统下打开CSV出现中文乱码的问题
内容的提问来源于stack exchange,提问作者spranza
相关产品推荐
相关产品推荐

