Python技术求助:如何将计算的Change列写入新CSV文件
问题解决:计算的Change列未写入CSV文件
你的代码核心问题是:只完成了Change值的计算和打印,但没有执行写入输出文件的操作。DictWriter实例创建后,必须调用writerow()方法才能将数据行写入目标文件。
修改后的代码
import csv # 注意:代码中若未导入csv模块,必须添加这一行 with (open('IBM.csv', newline='', encoding='utf-8') as infile, open('IBM_out.csv', 'w', newline='', encoding='utf-8') as outfile): reader = csv.DictReader(infile) writer = csv.DictWriter(outfile, fieldnames=['Change']) writer.writeheader() for row in reader: # 计算Change值 row['Change'] = (float(row['Close']) - float(row['Open'])) / float(row['Open']) print(row['Change']) # 关键操作:将计算结果写入输出文件 writer.writerow({'Change': row['Change']})
关键修改说明
- 添加
writer.writerow({'Change': row['Change']}):这行代码会把计算得到的Change值封装为字典,通过DictWriter写入到输出CSV的对应列中。 - 补全依赖:如果你的代码开头没有导入
csv模块,必须加上import csv,否则会触发模块未找到的报错。
扩展:保留原CSV字段的写法
如果后续需要保留原文件中的其他字段,只需调整fieldnames参数,包含原字段和新增的Change列即可:
import csv with (open('IBM.csv', newline='', encoding='utf-8') as infile, open('IBM_out.csv', 'w', newline='', encoding='utf-8') as outfile): reader = csv.DictReader(infile) # 保留原所有字段,并添加Change列 fieldnames = reader.fieldnames + ['Change'] writer = csv.DictWriter(outfile, fieldnames=fieldnames) writer.writeheader() for row in reader: row['Change'] = (float(row['Close']) - float(row['Open'])) / float(row['Open']) print(row['Change']) writer.writerow(row)
内容的提问来源于stack exchange,提问作者Mery p.
相关产品推荐
相关产品推荐

