Заменить нулевые значения фрейма данных pandas на среднее значение groupby

#python #pandas #dataframe #jupyter-notebook #fillna

#python #pandas #фрейм данных #jupyter-ноутбук #заполненная

Вопрос:

У меня есть фрейм данных со следующими данными:

df

Я хочу заменить нулевые значения каждой страны соответствующими средними значениями.

Например, я вычислил средние значения с помощью следующего кода:

 df2=df.groupby('country').mean()  

среднее

Я должен заменить нулевые значения в df соответствующим средним значением, присутствующим в df2.
Если среднее значение равно NaN, то оставьте Nan, иначе значение.

Я пробовал использовать приведенный ниже код, но потерпел неудачу: 1. Выходные данные по-прежнему имеют значения NaN:

Выходные данные по-прежнему имеют значения NaN

2.

 df['retail'] = df['retail'].replace('',df.groupby('country').mean())  

введите описание изображения здесь

Ответ №1:

Чтобы заменить нули на среднее значение столбца, вы должны сделать:

  df['transit_stations'] = df['transit_stations'].fillna(df2.groupby('country')['transit_stations'].transform('mean'))
  

Комментарии:

1. Но проблема с приведенным выше кодом заключается в том, что он не заменяет нулевые значения средним значением соответствующей страны. Я ожидаю заменить нулевое значение одного фрейма данных на среднее значение поиска соответствующей страны

2. Я исправил свой ответ выше после вашего разъяснения

3. Если вы не берете среднее значение из другого DF, измените df2 на df