我有一个带有每日DatetimeIndex的Pandas DataFrame。我正在尝试应用Resample方法将值汇总为每月系列,如下所示:
>>> aggVols.resample('M',axis=1).sum()
但是当我尝试这个时,我得到了错误
TypeError: Only valid with DatetimeIndex or PeriodIndex
我注意到没有设置对象索引的频率(None)。
>>>aggVols.index
<class 'pandas.tseries.index.DatetimeIndex'>
[2016-01-04, ..., 2016-07-01]
Length: 130, Freq: None, Timezone: None
所以我首先将频率设置为每日(工作日)并重置索引,以便我可以应用重新采样:
>>> aggVols = aggVols.reindex(aggVols.asfreq('B').index)
>>> aggVols.index
<class 'pandas.tseries.index.DatetimeIndex'>
[2016-01-04, ..., 2016-07-01]
Length: 130, Freq: B, Timezone: None
但我仍然得到重新取样函数的相同错误:
TypeError: Only valid with DatetimeIndex or PeriodIndex
索引有什么问题?为什么它无效? 如果我将频率设置为D,我会得到同样的错误。
谢谢!
答案 0 :(得分:0)
更改
aggVols.resample('M',axis=1).sum()
到
aggVols.resample('M',axis=0).sum()
您的DatetimeIndex
位于行(而不是列)上。
一般来说,轴0是行,轴1是列,轴2是高度,轴3-N ......它们被认为更抽象。
沿轴&#34;&#34; the NumPy docs的一部分。
答案 1 :(得分:0)
最后得到它。最后使用该方法与操作错误,就好像它是一个系列。正确的代码是:
aggVols.resample('M',axis=0,how=sum)