У меня много пропущенных данных между годами и месяцами моего кадра данных, который выглядит следующим образом:
Year Month State Value
1969 12 NJ 5500
1969 12 NY 6418
1970 8 IL 10093
1970 12 WI 6430
1970 7 NY 6140
1971 10 IL 10093
1971 6 MN 6850
1971 3 SC 7686
1972 12 FL 8772
2016 1 NJ 9000
Для каждого штата мне нужно заполнить все недостающие данные с начала годазначения начинались до 2018 года, но единственные данные, которые существуют, в основном между 1969 и 1990 годами, поэтому мне просто нужно заполнить пробелы.
Желаемый результат (для Нью-Джерси, но необходимый для всех состояний) будет:
Year Month State Value
1969 12 NJ 5500
1970 1 NJ 5500
1970 2 NJ 5500
1970 3 NJ 5500
1970 4 NJ 5500
1970 5 NJ 5500
1970 6 NJ 5500
.
.
1970 12 NJ 5500
.
.
2010 1 NJ 5500
2010 2 NJ 5500
2010 3 NJ 5500
.
.
2018 1 NJ 9000
Я пытался превратить месяцы в категориальные значения, которые варьируются от 1 до 12 месяцев, перегруппировать и сбросить индекс, а затем использовать ffill для разделения значений на эти вновь созданные индексы столбцов, такие как:
df['Month'] = pd.Categorical(df['Month'], categories=range(1, 13))
df = df.groupby(['State', 'Year', 'Month']).first().reset_index()
df['Value'] = df.groupby('Region')['Value'].ffill()
Но этот метод дает мне значения NaN, такие как:
State Year Month Value
NJ 1969 12 5500.0
NJ 1970 1 nan
NJ 1970 2 nan
NJ 1970 3 nan
.
.
NJ 2016 1 9000.0
Я не могу понять, почему этот метод работал раньше, так как я проверял его на других данных с реальными результатами.