我正在尝试将具有一定频率的Pandas.Series适应到具有不同频率的Pandas.Series上。因此,我使用了重新取样函数,但它没有识别出'M'是'3M'的子周期,并引发了错误。
import pandas as pd
idx_1 = pd.period_range('2017-01-01', periods=6, freq='M')
data_1 = pd.Series(range(6), index=idx_1)
data_higher_freq = data_1.resample('3M', kind="Period").sum()
引发以下异常:
Traceback (most recent call last): File "/home/mitch/Programs/Infrastructure_software/Sandbox/spyderTest.py", line 15, in <module>
data_higher_freq = data_1.resample('3M', kind="Period").sum() File "/home/mitch/anaconda3/lib/python3.6/site-packages/pandas/core/resample.py", line 758, in f return self._downsample(_method, min_count=min_count) File "/home/mitch/anaconda3/lib/python3.6/site-packages/pandas/core/resamplepy", line 1061, in _downsample 'sub or super periods'.format(ax.freq, self.freq))
pandas._libs.tslibs.period.IncompatibleFrequency: Frequency <MonthEnd> cannot be resampled to <3 * MonthEnds>, as they are not sub or super periods
这似乎是由pd.tseries.frequencies.is_subperiod函数引起的:
import pandas as pd
pd.tseries.frequencies.is_subperiod('M', '3M')
pd.tseries.frequencies.is_subperiod('M', 'Q')
第一个命令返回False,第二个命令返回True。关于任何解决方案的提示将不胜感激。
谢谢。
pd.tseries.frequencies.is_subperiod('M', '3M')
在我的电脑上返回了Nonetype
而不是bool
。但是对我来说重新采样没有问题。我正在运行 Python 3.6。 - Mankind_008