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

使用Pandas按月、日、小时计算Value列均值失败的问题排查

解决Pandas分组后仅对指定列计算均值的问题

嘿,我来帮你搞定这个困扰!你遇到的问题根本不是Value列的0值导致的——核心原因是你在分组聚合的时候,没有明确告诉Pandas只对Value列计算平均值,所以它默认对所有数值型列(包括Count和Year)都执行了均值计算,这才出现了不符合预期的结果。

正确的解决步骤

这里给你两种靠谱的实现方式,都能精准只计算Value列的均值:

方法1:分组后直接指定目标列求均值

先确保你已经有了month、day、hour这三列(如果是从datetime列提取的,代码我也给你附上),然后直接在groupby后指定Value列再调用mean():

# 如果你是从datetime列提取月/日/小时:
df['month'] = df['datetime_col'].dt.month
df['day'] = df['datetime_col'].dt.day
df['hour'] = df['datetime_col'].dt.hour

# 分组并仅计算Value列的均值
df1 = df.groupby(['month', 'day', 'hour'])['Value'].mean().reset_index()

方法2:用agg方法明确指定聚合规则

这种方式更灵活,适合后续需要对不同列做不同聚合操作的场景,这里我们只需要给Value列指定mean:

df1 = df.groupby(['month', 'day', 'hour']).agg({'Value': 'mean'}).reset_index()

为什么之前的方法不行?

如果你之前的代码是类似df.groupby(['month','day','hour']).mean()这种写法,Pandas会自动识别所有数值类型的列(比如Count、Year、Value),并对每一列都计算均值——这就是为什么你会看到Count和Year的均值,而不是你想要的只有Value列的结果。

至于你把0替换成null的操作,其实对均值计算本身没影响(mean()会自动忽略null值),但这并不是解决当前问题的关键哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:14:27