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

如何解决Pandas按ID分组计算平均速度时出现inf值的问题

问题原因

出现inf的核心原因是原始speed Km/h列中本身存在inf值(一般是前期计算速度时出现了除以0的运算),分组求和后inf被保留,最终计算平均时得到inf结果。你给出的示例中Total_steps均为正整数,排除了分母为0的可能。

解决方法

  • 第一步:先清理原始速度列的无效值
import numpy as np
# 将正负inf替换为NaN
df2['speed Km/h'] = df2['speed Km/h'].replace([np.inf, -np.inf], np.nan)
# 可选:根据业务场景过滤不合理的速度值,示例为保留0到120km/h之间的有效值
df2 = df2[df2['speed Km/h'].between(0, 120, inclusive='neither')]
  • 第二步:直接用pandas内置的均值方法聚合,避免手动计算出现误差,该方法会自动跳过NaN值
# 仅需要平均速度的最简写法
df_Speed = df2.groupby('ID')['speed Km/h'].mean().reset_index(name='Avg_Speed')

如果需要同时保留总速度、有效步数和平均速度,用以下聚合写法:

df_Speed = df2.groupby('ID').agg(
    Total_Speed=('speed Km/h', 'sum'),
    Total_steps=('speed Km/h', 'count'), # 这里统计的是有效速度的条数,比统计ID的count更准确
    Avg_Speed=('speed Km/h', 'mean')
).reset_index()
  • 第三步:可选处理剩余的空值(如果某个ID下所有速度都是无效值,聚合后Avg_Speed会为NaN)
    • 方案1:删除无有效速度的ID行
    df_Speed = df_Speed.dropna(subset=['Avg_Speed'])
    
    • 方案2:将空平均速度填充为0
    df_Speed['Avg_Speed'] = df_Speed['Avg_Speed'].fillna(0)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:27:00