Я пытаюсь заполнить 'NA'
значения в моей базе данных. Однако я не хотел брать среднее значение по всей колонке. Я хочу взять среднее значение за 12 месяцев и затем заполнить пропущенные значения средним значением за 12 месяцев.
так:
Я создал пустой фрейм данных с именем Averages
Averages = pd.DataFrame()
Затем я создал два цикла for, чтобы найти средние значения за 12 месяцев из основного фрейма данных под названием df
. df
имеет имя столбца 'Carbon Dioxide (ppm)'
. Это из столбца, который я пытаюсь рассчитать скользящий средний 12 месяцев.
Создает среднее значение за 12 месяцев для Carbon Dioxide
графика
for x in Year:
Averages.loc[x,'CO2 Mean'] = df[df['Year'] == x]['Carbon Dioxide (ppm)'].mean()
Создает среднее значение за 12 месяцев для Carbon Dioxide
Fit участка
for x in Year:
Averages.loc[x, 'CO2 Mean Fit'] = df[df['Year'] == x]['Carbon Dioxide Fit (ppm)'].mean()
сработал хорошо и заполнил фрейм данных «Средние» скользящим средним за 12 месяцев из столбца, указанного в коде.
Наконец, я хочу заполнить мои пропущенные значения, которые определены 'nan'
. Я использую это для l oop, чтобы сделать это:
for i in Year:
df[df.Year == i, 'Carbon Dioxide (ppm)'].fillna(value = (Averages.loc[Averages.index == i,'CO2 Mean'].iloc[0]), inplace = True)
Однако, когда я запускаю его, значения все еще читают 'nan'
. Я напечатал код, записанный в параметре value, выполнив (print(Averages.loc[Averages.index == 1958,'CO2 Mean'].iloc[0]))
, и он напечатал все значения.
В случае, если это важно, я прочитал в своем dataframe
следующее:
df = pd.read_csv('archive.csv', na_values = ['nan'])
Я не уверен, что сделал неправильно, пожалуйста, помогите. Спасибо