#python #pandas
#python #pandas
Вопрос:
Я хотел бы получить среднее значение за 2 года на отраслевом уровне для временных рядов следующим образом:
firm industry year roe
A agri 1992 0.05
B agri 1992 0.065
A agri 1993 0.055
B agri 1993 0.07
C tech 1992 0.10
D tech 1992 0.11
C tech 1993 0.11
D tech 1993 0.12
Результат не такой, как ожидалось
df.set_index('year').groupby('industry')['roe'].rolling(window=2).mean()
industry year
agri 1992 NaN
1992 0.0575
1993 0.0600
1993 0.0625
tech 1992 NaN
1992 0.1050
1993 0.1100
1993 0.1150
я ожидаю, что для agri 1992 я ожидаю nan
, потому что я хочу скользящее окно по году внутри отраслевой группы, а не на уровне фирмы (n наблюдений). Как мне это сделать, в идеале без форматирования year как объекта datetime?
Обновить
Pandas в основном игнорирует / дважды подсчитывает повторяющийся индекс в операции прокрутки для вычисления окна. В данном случае это две записи уровня фирмы за 1992 год в рамках industry agri, которые, похоже, уже учитываются как окно «2», но на самом деле это всего лишь один год, и поэтому их следует учитывать как окно «1».
TL; DR Pandas должен создавать скользящее среднее значение на основе окна с уникальным количеством в индексе, а не обычного количества, приводящего в этом случае к эффективному окну в 1 год вместо 2.
Ответ №1:
Из вашего объяснения вам нужно окно 3? Пожалуйста, попробуйте. df.set_index('year').groupby(['industry'])['roe'].rolling(window=3).mean().to_frame('mean')
Комментарии:
1. привет, wwnde, нет, я думаю, вы неправильно поняли мой вопрос. Я хотел бы видеть окно по всем наблюдениям в одной и той же отраслевой группе за последние 2 года. Я также пытался использовать min_periods=2, но я получаю тот же результат. Я вообще не должен видеть среднее значение за 1992 год, потому что это первый год. Pandas предполагает, что, учитывая, что в 1992 году было 2 фирмы (obs), у нас есть достаточный диапазон для окна 2. Но это неверно, потому что это всего 1 год, а не 2.
2. Pandas в основном игнорирует / дважды подсчитывает повторяющийся индекс в операции прокрутки для вычисления окна. В данном случае это две записи 1992 года, например, в industry agri.