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

Python使用csv.DictReader提取CSV列后,如何保存为新CSV文件

解决方法:AttributeError: 'DictReader' object has no attribute 'to_csv'

问题根源很明确:csv.DictReader是Python标准库中用于读取CSV的迭代器对象,它本身没有to_csv方法——这个方法是pandas DataFrame独有的。下面给你两种可行的解决思路:

方法一:用csv模块的DictWriter手动写入

既然你已经用csv模块读取了数据,可以继续用同模块的DictWriter来保存筛选后的列:

import csv

# 定义要保留的列名
selected_columns = ['I_CaIIHK_err', 'Swm']

# 读取原文件并收集目标数据
rows_to_save = []
with open('M.csv', newline='') as f:
    reader = csv.DictReader(f)
    # 打印表头和分隔线
    print(selected_columns[0], ",", selected_columns[1])
    print("---------------------------------")
    for row in reader:
        # 打印当前行数据
        print(row[selected_columns[0]], ",", row[selected_columns[1]])
        # 收集需要保存的行(只保留指定列)
        rows_to_save.append({col: row[col] for col in selected_columns})

# 将收集的数据写入新CSV
with open('New.csv', 'w', newline='') as f:
    writer = csv.DictWriter(f, fieldnames=selected_columns)
    writer.writeheader()  # 写入表头
    writer.writerows(rows_to_save)  # 写入所有行数据

方法二:直接用pandas处理(更简洁)

你已经导入了pandas,完全可以用它一步完成读取、筛选和保存,代码更简洁:

import pandas as pd

# 读取原CSV,只加载需要的两列
df = pd.read_csv('M.csv', usecols=['I_CaIIHK_err', 'Swm'])

# 打印数据(可选,和你原来的打印逻辑对应)
print("I_CaIIHK_err", ",", "Swm")
print("---------------------------------")
for _, row in df.iterrows():
    print(row['I_CaIIHK_err'], ",", row['Swm'])

# 保存到新CSV
df.to_csv('New.csv', index=False)

两种方法都能解决你的问题,方法二更适合快速处理CSV数据,尤其是当数据量较大时,pandas的效率更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 03:10:39