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

Python Pandas 用户输入新增消费数据统计时KeyError问题修复问询

修复方案

错误原因

你遇到的KeyError由列名不匹配直接导致:你的account.csv中存储消费金额的列名为Amount Spent,但统计模块的代码中调用的列名为Amount,pandas在DataFrame中找不到对应列因此抛出异常。
除此之外你的代码还存在两处影响运行的潜在问题:

  1. 输入的消费金额未做类型转换,input默认返回字符串,存入CSV后会被识别为文本,无法参与数值计算
  2. 你向CSV追加新记录后,没有重新读取最新数据,后续统计用的仍然是追加前的旧数据集,不会包含新输入的消费记录

修复步骤

  • 将统计模块中所有accountData['Amount']替换为accountData['Amount Spent'],匹配实际列名
  • 对输入的amount做数值类型转换,统一转为浮点型避免整数/小数输入报错
  • 追加新记录到CSV后,重新读取CSV文件获取最新数据集,再做均值统计
  • 修正输入日期时的单引号语法错误,避免字符串拼接异常

修正后完整代码

# 目录切换
import os
os.chdir('D:\\Scripts\\Visual Studio Code\\money_outflow')
print('Current directory:', os.getcwd())

# 导入pandas
import pandas as pd 

# 读取初始account.csv
accountData = pd.read_csv("account.csv")
print(accountData.head())

# 用户输入
date = input("Enter today's date: ")
# 转换金额为浮点型
amount = float(input('Enter the amount: '))

# 追加输入到CSV
user_input = pd.DataFrame({'Date': [date],
                           'Amount Spent': [amount]})
user_input.to_csv('account.csv', mode='a', index=False, header=False)

# 重新读取更新后的CSV,获取最新数据
accountData = pd.read_csv("account.csv")

# 统计计算
accountData['Mean'] = accountData['Amount Spent'].mean()
accountData['Rolling Mean 10'] = accountData['Amount Spent'].rolling(10).mean()
accountData['Rolling Mean 30'] = accountData['Amount Spent'].rolling(30).mean()

print(accountData.tail())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 14:09:05