【发布时间】:2019-12-14 02:54:40
【问题描述】:
我有一个稀疏填充的数据框,如下所示:
entity_id 59e75f2b9e182f68cf25721d 59e75f2bc0bd722a5f395ee9 59e75f2c05e40310ebe1f433 ...
organisation_id group_id datetime ...
59e7515edb84e482acce8339 59e75177575fc94638c1f8e7 2018-04-01 02:01:00 NaN NaN NaN ...
2018-04-01 02:02:00 NaN 2.15 NaN ...
2018-04-01 02:03:00 NaN NaN 3.689 ...
2018-04-01 02:04:00 NaN NaN NaN ...
2018-04-01 02:05:00 NaN NaN NaN ...
... ... ... ... ...
5cb590649f18c69541d34f7a 2019-04-01 01:55:00 NaN NaN NaN ...
2019-04-01 01:56:00 NaN NaN NaN ...
2019-04-01 01:57:00 NaN NaN NaN ...
2019-04-01 01:58:00 NaN NaN NaN ...
2019-04-01 01:59:00 NaN NaN NaN ...
我想将此帧按group_id 和应用于日期时间索引的 10 分钟 bin 分组(对于每个组,我希望对同一 10 分钟窗口内发生的值进行分组,以便我可以对列取平均值,基本上忽略了日期时间索引的分钟部分)。
我尝试过使用pd.Grouper(freq='10T'),但它似乎无法与多级索引结合使用。
group_mean = frame.groupby(
pd.Grouper(freq='10T'), level='datetime').mean(axis=1)
这给了我错误信息
TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of 'MultiIndex'
作为参考,我想要的输出应该如下所示:
group_mean
organisation_id group_id datetime
59e7515edb84e482acce8339 59e75177575fc94638c1f8e7 2018-04-01 02:10:00 mean(axis=1)
2018-04-01 02:20:00 mean(axis=1)
...
5cb590649f18c69541d34f7a 2019-04-01 01:50:00 mean(axis=1)
2019-04-01 02:00:00 mean(axis=1)
...
其中mean(axis=1) 是该特定组和时间箱中所有非NaN 列的平均值。
【问题讨论】:
标签: python pandas pandas-groupby