作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个稀疏填充的数据框,如下所示:
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
列的平均值。
最佳答案
解决方案需要DatetimeIndex
,因此首先将另一个级别转换为列并将其添加到list
中的groupby
:
注意:平均值是每组的平均值,而不是每列的平均值。
group_mean = (frame.reset_index(['organisation_id','group_id'])
.groupby(['organisation_id',
'group_id',
pd.Grouper(freq='10T',level='datetime')])
.mean())
如果需要每列的平均值:
df = frame.mean(axis=1)
关于python - Groupby 多级索引中的时间仓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57377975/
我正在尝试为机器人框架获取魔法。 我按照此详细指南中的说明进行操作 https://blog.codecentric.de/en/2017/09/robot-framework-compare-ima
我是一名优秀的程序员,十分优秀!