Проблема с функцией .fillna в течение l oop (Python) - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь заполнить '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'])

Я не уверен, что сделал неправильно, пожалуйста, помогите. Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...