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

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.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 11:05:17