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

Pandas按force_min分箱统计各区间总时长的报错解决咨询

问题解决思路与代码实现

报错原因说明

  • 第一个KeyError: 'Column not found: local_dttm':local_dttm是你的DataFrame多级索引的其中一级,不属于普通列,直接通过列名访问自然无法找到。
  • 第二个AssertionError:pandas不支持直接对datetime时间戳类型的列执行sum聚合操作,时间戳求和没有实际业务含义,你需要计算的是时长总和,应该基于时间间隔统计。

另外结合你的业务说明:每10分钟采集一条数据,每条数据对应固定10分钟的停留时长,完全可以通过统计每个分箱的记录条数,直接乘以10分钟得到总时长,不需要操作时间戳求和,逻辑更简单也不会报错。

完整实现代码

import pandas as pd

# 定义分箱规则
bins = [0,200,400,600,800,1000,1200]

# 按分箱分组统计记录数,observed=False 保留所有分箱区间,无数据的分箱计数为0
grouped = df.groupby(pd.cut(df['force_min'], bins=bins), observed=False).size()

# 统计条数乘以10分钟得到总停留时长,整理为要求的输出格式
result = (grouped
          .map(lambda x: pd.Timedelta(minutes=10 * x))
          .reset_index(name='time_spent_force_min')
          .rename(columns={'force_min': 'bins'}))

输出结果说明

运行上述代码后得到的result就是你要求的格式,分箱列和时长列完全匹配示例输出,没有数据的分箱会自动显示00:00:00。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 04:18:01