首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫:重新整理分类指数数据

熊猫:重新整理分类指数数据
EN

Stack Overflow用户
提问于 2020-11-08 10:06:10
回答 2查看 196关注 0票数 0

假设一些名为logData的测量数据(实际上是每分钟提供的)

代码语言:javascript
复制
import pandas as pd, numpy as np

idxData = pd.to_datetime(['08:00', '08:15', '08:30', '08:45', '09:00'])
logData = pd.DataFrame(np.array([1.0, 2.0, 3.0, 4.0, 5.0]), columns=['val'], index=idxData)
idxRng  = pd.interval_range(idxData[0], idxData[-1], freq='30min')
avgData = logData.groupby( pd.cut(logData.index, idxRng) ).mean()

数据被分组为avgData,例如如下所示:

代码语言:javascript
复制
                      val
(08:00:00, 08:30:00]  2.5
(08:30:00, 09:00:00]  4.5

这个被降采样的avgData现在应该(在执行了其他一些计算之后)再次被过采样,例如,到freq='10min'的一个频率进行进一步的计算。由于avgData.resample('10min')引发以下错误,因此问题是如何重采样分类数据

代码语言:javascript
复制
TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of 'CategoricalIndex'

事先非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-11-08 15:33:55

我花了一小段时间才弄清楚如何有意义地转换一个分类索引,但是index.categories.mid似乎有效,允许通过

代码语言:javascript
复制
avgData.set_index( pd.DatetimeIndex( avgData.index.categories.mid ), inplace=True)
avgData = avgData.resample('5min').interpolate(method='nearest')

产生预期结果:

代码语言:javascript
复制
          val
08:15:00  2.5
08:20:00  2.5
08:25:00  2.5
08:30:00  2.5
08:35:00  4.5
08:40:00  4.5
08:45:00  4.5
票数 0
EN

Stack Overflow用户

发布于 2020-11-08 13:29:37

为了使重采样工作,您的索引需要有一个datetime64ns的数据类型,通过运行下面的代码检查索引的数据类型。

代码语言:javascript
复制
avgData.index.dtype
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64736835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档