Замена значений NaN на среднее значение по группе - PullRequest
0 голосов
/ 17 октября 2018

У меня есть датафрейм, состоящий из стран, лет и многих других функций.есть много лет для одной страны

country  year population.....  etc.
1        2000   5000
1        2001    NaN
1        2002   4800
2        2000

, сейчас в кадре данных много NaN.Я хочу заменить каждый NaN, соответствующий определенной стране в каждом столбце, средним значением по стране в этом столбце.

поэтому, например, для NaN в столбце населения, соответствующем стране 1, 2001 год, я хочу использоватьсредняя численность населения по стране 1 за все годы = (5000 + 4800) / 2.сейчас я использую метод groupby (). mean (), чтобы найти средства для каждой страны, но сталкиваюсь со следующими трудностями: 1 - некоторые средства приходят в виде NaN, когда я точно знаю, что для них есть значение.почему так?2- как я могу получить доступ к определенным значениям в предложении groupby?Другими словами, как я могу заменить каждый NaN на его правильное среднее значение?

Большое спасибо.

1 Ответ

0 голосов
/ 17 октября 2018

Использование combine_first с groupby mean

df.combine_first(df.groupby('country').transform('mean'))

Или

df.fillna(df.groupby('country').transform('mean'))
...