У меня есть фрейм данных с некоторыми значениями year
и type
. Я хочу заменить все значения NaN в каждом году средним значением этого года конкретным типом. Я хотел бы сделать это самым элегантным способом. Я имею дело с большим количеством данных, поэтому было бы неплохо меньше вычислений.
Пример:
df =pd.DataFrame({'year':[1,1,1,2,2,2],
'type':[1,1,2,1,1,2],
'val':[np.nan,5,10,100,200,np.nan]})
Я хочу, чтобы ВСЕ nan, независимо от их типа, были заменены на соответствующий годсреднее для всех типов 1.
В этом примере первая строка NaN должна быть заменена на 5
, а последняя строка должна быть заменена на 150.
Это только заполняет значения, которыеотсутствует для типа 1, а не для типа 2
df[val]=df[val].fillna(df.query('type==1').groupby('year')[val].transform('mean'))