Повторная выборка панд, процентные значения - PullRequest
1 голос
/ 15 марта 2019

У меня есть pandas dataframe ежемесячных наблюдений с указателем даты и времени. Я хотел бы перейти к ежегодным наблюдениям. Проблема в том, что значения в моем фрейме данных являются значениями производительности (например: ежемесячное процентное изменение цены акций). Как я могу изменить выборку до годовых значений при правильной агрегации?

пример того, что мне нужно:

     m1  0.1     to      q1 0.331
     m2  0.1             q2 0.089
     m3  0.1
     m4 -0.1
     m5  0.1
     m6  0.1

ежемесячная до квартальной повторной выборки, 1,1 ^ 3-1 = 0,331, 0,9 * (1,1 ^ 2) -1 = 0,089

Ответы [ 2 ]

1 голос
/ 15 марта 2019

Используя ответ Феликса, если вы не хотите изменять свой индекс, вы можете применить регулярное выражение перед группировкой:

regex_pattern = lambda s: (int(re.search(r'\d+', s).group())-1)//3
d1 = (df.val + 1).groupby(regex_pattern).prod() - 1

out:

0    0.331
1    0.089
Name: val, dtype: float64
1 голос
/ 15 марта 2019

Учитывая, что ваши данные находятся в фрейме данных с именем df со столбцом val, содержащим целое число:

(df.val + 1).groupby(df.index // 3).prod() - 1
...