如何解决熊猫:重新采样分类索引数据
假设一些测量数据(实际上每分钟给出一次)名为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'
非常感谢!
解决方法
为了使重新采样有效,您的索引需要具有datetime64 [ns]的数据类型。 通过运行下面的代码,检查索引的数据类型。
avgData.index.dtype
,
我花了一些时间弄清楚如何有意义地转换分类索引,但是index.categories.mid
似乎可以工作,可以通过以下方式对数据进行重新采样
avgData.set_index( pd.DatetimeIndex( avgData.index.categories.mid ),inplace=True)
avgData = avgData.resample('5min').interpolate(method='nearest')
产生预期的结果:
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。