【发布时间】:2021-03-31 13:03:04
【问题描述】:
我正在尝试获取具有时间戳和各种其他字段的数据帧,并按四舍五入的时间戳(到最接近的分钟)分组,并取另一个字段的平均值。我收到错误 no numeric value to aggregate
我正在像这样对时间戳列进行四舍五入:
df['time'] = df['time'].dt.round('1min')
聚合列的形式为:0 days 00:00:00.054000
df3 = (
df
.groupby([df['time']])['total_diff'].mean()
.unstack(fill_value=0)
.reset_index()
)
我意识到 total_diff 列是一个时间增量字段,但我原以为这仍会被视为数字?
我的理想输出应包含以下列:四舍五入的时间戳、分组在该时间戳中的记录数、按四舍五入的时间戳计算的平均 total_diff。我怎样才能做到这一点?
编辑 示例行:
[index, id, time, total_diff]
[400, 5fdfe9242c2fb0da04928d55, 2020-12-21 00:16:00, 0 days 00:00:00.055000]
[401, 5fdfe9242c2fb0da04928d56, 2020-12-21 00:16:00, 0 days 00:00:00.01000]
[402, 5fdfe9242c2fb0da04928d57, 2020-12-21 00:15:00, 0 days 00:00:00.05000]
时间列不是唯一的。我想按时间列分组,计算分组到每个时间桶的行数,并为每个时间桶生成 total_diff 的平均值。
期望的结果:
[time, count, avg_total_diff]
[2020-12-21 00:16:00, 2, .0325]
【问题讨论】:
-
请与预期输出共享示例输入。
标签: python pandas aggregation