Python pandas: применение скользящей суммы к сводной таблице - PullRequest
0 голосов
/ 04 августа 2020

Я создал фрейм данных с помощью команды pivot_table. Фрейм данных содержит 351 строку и 120 столбцов. Фрейм данных выглядит следующим образом:

RY          2011                                              ...   2020
Month   1   2   3   4   5   6   7   8   9   10  ... 3   4   5   6   7   8   9   10  11  12
ID                                                                                  
AB10    0   0   0   0   0   0   0   0   0   0   ... 0   0   0   0   0   0   0   0   0   0
AB1286  0   0   0   0   2   0   0   0   0   0   ... 0   0   0   0   0   0   0   0   0   0
AB1951  0   0   0   0   0   0   0   0   0   0   ... 0   0   0   0   0   0   0   0   0   0
AB2 0   0   0   0   0   0   0   0   0   0   ... 0   0   0   0   0   0   0   0   0   0
AB2338  0   0   0   0   0   0   0   0   0   0   ... 0   0   0   0   0   0   0   0   0   0

Теперь я хочу рассчитать скользящую сумму за 12 месяцев для ID. Я написал следующую команду для вычисления скользящей суммы:

df.groupby('ID').rolling(12,on='Month').sum()

Однако это дало следующую ошибку:

ValueError: invalid on specified as Month, must be a column (of DataFrame), an Index or None

Может ли кто-нибудь помочь мне в решении проблемы?

Ответы [ 2 ]

1 голос
/ 04 августа 2020

Попробуйте запустить этот код перед созданием сводной таблицы. Но убедитесь, что вы сначала создали столбец datetime с чем-то вроде:

df['Date'] = pd.to_datetime(df['Year'].astype(str) + '-' + df['Month'].astype(str) + '-01')

, а затем:

df.groupby('ID').rolling(12,on='Date').sum()

0 голосов
/ 04 августа 2020

Что содержит «ID»? Вы пробовали транспонировать сводную таблицу с помощью?

df.T.groupby('ID').rolling(12,on='Month').sum()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...