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
相关产品推荐
相关产品推荐

