首页 > 解决方案 > Pandas:重新采样分类索引数据

问题描述

假设一些测量数据(实际上大约每分钟给出)命名为logData

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如下所示:

                      val
(08:00:00, 08:30:00]  2.5
(08:30:00, 09:00:00]  4.5

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

TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of 'CategoricalIndex'

提前谢谢了!

标签: pythonpandaspandas-groupbypandas-resample

解决方案


为了使重采样工作,您的索引需要具有 datetime64[ns] 的数据类型,通过运行以下代码检查索引的数据类型。

avgData.index.dtype

推荐阅读