Python Pandas 用户输入新增消费数据统计时KeyError问题修复问询
修复方案
错误原因
你遇到的KeyError由列名不匹配直接导致:你的account.csv中存储消费金额的列名为Amount Spent,但统计模块的代码中调用的列名为Amount,pandas在DataFrame中找不到对应列因此抛出异常。
除此之外你的代码还存在两处影响运行的潜在问题:
- 输入的消费金额未做类型转换,input默认返回字符串,存入CSV后会被识别为文本,无法参与数值计算
- 你向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
相关产品推荐
相关产品推荐

