Панды: PeriodIndex с годом начинается с привязки - PullRequest
0 голосов
/ 30 октября 2018

У меня проблемы с созданием панд PeriodIndex с привязкой со смещением, ссылающимся на год, начинающийся месяц

Создание PeriodIndex с месяцем на конец года работает нормально:

>>> per_ind = pd.PeriodIndex(start='2001-01-01', periods=1, freq='A-AUG')
>>> per_ind.start_time
DatetimeIndex(['2000-09-01'], dtype='datetime64[ns]', freq=None)
>>> per_ind.end_time
DatetimeIndex(['2001-08-31'], dtype='datetime64[ns]', freq=None)
>>> per_ind.year
Int64Index([2001], dtype='int64')

таким образом, мы получаем годовой период, заканчивающийся в конце августа 2001 года. Этот год равен 2001

То, что я хотел бы сделать, это создать период, который начинается в августе 2001 года, заканчивается годом позже и имеет год, равный 2001 году (если кто-то заинтересован, это связано с тем, как USDA сообщает о годах урожая; урожай 2001 года год для кукурузы в США, например, 2001-09-01: 2002-08-31)

Я бы предположил, что это так же просто, как изменить аргумент freq на 'AS_AUG', однако:

>>>per_ind = pd.PeriodIndex(start='2001-01-01', periods=1, freq='AS-AUG')
Traceback (most recent call last):
  File "/space/asd/conda/envs/rd/lib/python3.6/site-packages/pandas/tseries/frequencies.py", line 744, in _period_str_to_code
    return _period_code_map[freqstr]
KeyError: 'AS-AUG'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/space/asd/conda/envs/rd/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 2862, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-28-fc801b3bbb96>", line 1, in <module>
    per_ind = pd.PeriodIndex(start='2001-01-01', periods=1, freq='AS-AUG')
  File "/space/asd/conda/envs/rd/lib/python3.6/site-packages/pandas/core/indexes/period.py", line 236, in __new__
    freq, kwargs)
  File "/space/asd/conda/envs/rd/lib/python3.6/site-packages/pandas/core/indexes/period.py", line 288, in _generate_range
    subarr, freq = _get_ordinal_range(start, end, periods, freq)
  File "/space/asd/conda/envs/rd/lib/python3.6/site-packages/pandas/core/indexes/period.py", line 1065, in _get_ordinal_range
    _, mult = _gfc(freq)
  File "/space/asd/conda/envs/rd/lib/python3.6/site-packages/pandas/tseries/frequencies.py", line 335, in get_freq_code
    code = _period_str_to_code(freqstr[0])
  File "/space/asd/conda/envs/rd/lib/python3.6/site-packages/pandas/tseries/frequencies.py", line 746, in _period_str_to_code
    raise ValueError(_INVALID_FREQ_ERROR.format(freqstr))
ValueError: Invalid frequency: AS-AUG

Кто-нибудь может предложить какое-либо руководство здесь? Я могу добавить атрибут period_year в PeriodIndex, но это очень странно, и должен быть более аккуратный способ решения этой проблемы

EDIT:

Эта проблема возникает в объектах Периода панд - им не могут быть пропущены никакие начальные частоты периода. Есть ли для этого веская причина?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...