Я работаю с данными NLSY79 и пытаюсь построить «сглаженную» переменную дохода, которая в среднем составляет 4 года. В период с 1979 по 1994 год NLSY проводил обследования ежегодно, а после 1996 года - раз в два года. Это означает, что моя сглаженная переменная дохода будет в среднем четыре наблюдения до 1994 года и только два после 1996 года.
Я бы хотел, чтобы моя сглаженная переменная дохода удовлетворяла следующим критериям:
1) Это должно бытьв среднем 4 наблюдения за доходами с 1979 по 1994 год и только 2 с 1996 года
2) Окно должно начинаться с данного наблюдения, а не концентрироваться на нем. Поэтому моя сглаженная переменная дохода должна указывать мне средний доход за четыре года, начиная с этой даты
3) Она должна игнорировать NaNs
Следовательно, она должна выглядеть следующим образом (обратите внимание, чтоЯ только вычислил значения для «сглаженного дохода», которые можно было бы рассчитать на основе предоставленных мною данных.)
id year income 'smoothed income'
1 1979 20,000 21,250
1 1980 22,000
1 1981 21,000
1 1982 22,000
...
1 2014 34,000 34,500
1 2016 35,000
2 1979 28,000 28,333
2 1980 NaN
2 1981 28,000
2 1982 29,000
Я относительно новичок в манипулировании данными с пандами, поэтому я попробовал вот что:
smooth = DATA.groupby('id')['income'].rolling(window=4, min_periods=1).mean()
DATA['smoothIncome'] = smooth.reset_index(level=0, drop=True)
Этот код учитывает NaN, но в остальном не выполняет задачи 2) и 3).
Любая помощь будет принята с благодарностью