使用Pandas的groupby与Grouper分组datetime对象时出错求助
年度分组分析问题的解决步骤
第一个报错的原因与解决
- 报错本质:
max_ground_temp(°C)列包含“Value not available”这类非数值内容,计算均值时无法完成类型转换,触发TypeError。 - 解决步骤:
- 先清理目标列的异常值,将非数值内容转为NaN:
df['max_ground_temp(°C)'] = pd.to_numeric(df['max_ground_temp(°C)'], errors='coerce') - 再执行分组求均值操作,NaN会被自动排除:
dff = df.groupby(df.earth_time.dt.year)['max_ground_temp(°C)'].mean()
- 先清理目标列的异常值,将非数值内容转为NaN:
第二个报错的原因与解决
- 报错本质:
pd.Grouper的level参数用于指定索引层级,但earth_time是普通数据列而非索引,参数使用错误导致ValueError。 - 解决步骤:
使用key参数指定日期列,若需按自然年(每年1月1日为起始)统计,可将freq='Y'改为freq='AS',示例代码:# 前提:earth_time已转为datetime类型,max_ground_temp列已完成异常值清理 df_grouped = df.groupby(pd.Grouper(key='earth_time', freq='AS'))['max_ground_temp(°C)'].mean()
内容的提问来源于stack exchange,提问作者Sneha
相关产品推荐
相关产品推荐

