Переопределение года для группы в pandas - PullRequest
0 голосов
/ 23 января 2020

У меня есть некоторые ценовые данные в качестве временных рядов. Я пытаюсь сгруппировать и средние цены по годам и месяцам. Вот улов, я хочу иметь год go с июля по июнь, например, 2015 год будет июлем 2015 - июнь 2016 (определен как год урожая). Поэтому для 'Месяца урожая' также необходимо go 1-12 для июля- июне Есть ли в любом случае для достижения этой цели pandas. Логика c в моем коде кажется некорректной и не дает желаемого результата. Я пытался использовать al oop с некоторыми операторами if, но мой лог c где-то потерялся. Я разместил итоговый фрейм данных ниже. Как видите, данные года урожая неверны. Любая помощь в подходе к коду была бы отличной.

´´´

pxdata = ek.get_timeseries(['Wc1','BL2c1', 'W13.5-FOBRU=AGRP'], fields='CLOSE', start_date='2009-01-01')

pxdata.loc[:,'Crop Month'] = 0
pxdata.loc[:,'Crop Year'] = 0
pxdata.iloc[0,-1] = 2015
pxdata.iloc[0,-2] = 8
for i in range(1, len(pxdata)):
    if pxdata.index[i].month==7:
        pxdata.iloc[i,-2]=1
    elif pxdata.index[i].month>pxdata.index[i-1].month:
        pxdata.iloc[i,-2]=pxdata.iloc[i-1,-2]+1
    else:
        pxdata.iloc[i,-2]=pxdata.iloc[i-1,-2]
    if pxdata.iloc[i-1,-2]==12 and pxdata.iloc[i,-2]==1 :
        pxdata.iloc[i,-1]=pxdata.iloc[i-1,-1]+1
    else:
        pxdata.iloc[i,-1]=pxdata.iloc[i-1,-1]

´´´

Заранее спасибо, ребята

enter image description here

1 Ответ

3 голосов
/ 23 января 2020

установите дату как индекс, чтобы вы могли использовать dataframe.loc['2015-07-01':'2016-06-01'] для выбора ваших данных.

pandas .DataFrame.lo c

Затем создайте диапазон дат для своего временного ряда, который вы хотите выбрать.

start = pd.date_range('2015-06-01', periods=4, freq='12M') end = pd.date_range('2016-07-01', periods=4, freq='12M') for start, end in list(zip(start,end)): print(start, end)

pandas .date_range

Теперь вы можете выбрать период с помощью loc[start:end].

Если вы хотите выбрать средние значения , вы можете использовать dataframe.mean().

pandas .DataFrame.mean

Удачи.

...