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

使用Pandas读取CSV计算月均值时遇KeyError: 'Date'的解决问询

解决Pandas读取CSV时的KeyError: 'Date'问题

这个问题我之前也碰到过,根源在于你用的pd.DataFrame.from_csv方法已经被Pandas弃用,而且它的默认行为会把CSV的第一列当成DataFrame的索引,而不是普通的数据列。这就导致你后续尝试访问data['Date']时,找不到这个列名,从而抛出KeyError: 'Date'。

下面是具体的解决方案和优化后的代码:

核心修复点

  • 替换为官方推荐的pd.read_csv方法,它的默认行为会正确识别表头,不会把第一列设为索引。
  • 显式解析日期列,确保日期格式被正确识别,避免自动解析出错。
  • 优化分组求均值的逻辑,让代码更简洁规范。

修改后的完整代码

import pandas as pd
import os

os.chdir("in/base/dir")
# 使用pd.read_csv替代已弃用的from_csv,默认将第一行作为表头
data = pd.read_csv("data.csv")
# 显式解析Date列,指定格式匹配你的YEAR-MONTH-DAY(两位年份用%y,四位年份请用%Y)
data['Date'] = pd.to_datetime(data['Date'], format='%y-%m-%d')
# 直接通过dt.month提取月份,比转DatetimeIndex更简洁
data['Month'] = data['Date'].dt.month
# 仅对Data列求月均值,并用reset_index将Month转为普通列
mean_data = data.groupby('Month')['Data'].mean().reset_index()
# 使用Pandas的to_csv方法保存,格式更规范,避免print带来的格式问题
mean_data.to_csv("data_monthly.csv", index=False)

关键细节解释

  • 为什么用read_csv?
    from_csv是Pandas的旧版方法,现在官方已经不再维护,而read_csv参数更灵活,默认会把CSV的第一行作为表头,所有列都保留为数据列,完美解决你遇到的表头未被识别的问题。
  • 显式指定日期格式
    用pd.to_datetime加上format='%y-%m-%d'可以让日期解析更快、更准确,避免Pandas自动猜测格式时出现错误(尤其是当你的数据里有多种日期格式时)。如果你的年份是四位(比如2024-01-01),把%y改成%Y即可。
  • 优化分组逻辑
    groupby('Month')['Data'].mean()只针对Data列计算均值,避免对其他列做不必要的计算;reset_index()会把Month从分组后的索引变回普通列,这样保存的CSV会更符合常规格式。
  • 用to_csv保存文件
    相比print到文件,to_csv是Pandas专门为CSV设计的保存方法,能正确处理分隔符、表头和索引,输出的文件格式更标准。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:34:35