Я попытался использовать это, чтобы заменить значения NaN в счете функции столбца (целое число от 1 до 10) с помощью groupby (client_id или имя клиента _), однако значения NaN, похоже, не идут.
df['feature_count'].isnull().sum()
Выход:
2254
Теперь я использую:
df['feature_count'].fillna(df.groupby('client_name')['feature_count'].mean(), inplace=True)
Но выход остается неизменным:
df['feature_count'].isnull().sum()
2254
Любой другой способ заменить значения NaN с помощью других значений не NaN столбца, сгруппированного по их идентификаторам?
df.groupby('client_name')['feature_count'].mean()
возвращает серию.
Но вы не хотите заменять нулевые значения серией. Вместо этого вы хотите заменить нулевые значения средним отображением из серии.
Поэтому вы можете использовать следующее:
s = df.groupby('client_name')['feature_count'].mean()
df['feature_count'].fillna(df['client_name'].map(s), inplace=True)
Еще более Pandorable будет использовать pd.DataFrame.transform
, который обрабатывает часть отображения для вас:
s = df.groupby('client_name')['feature_count'].transform('mean')
df['feature_count'].fillna(s, inplace=True)
NaN
, взгляните на ваш вклад. В противном случае вам нужно будет предоставить минимальный воспроизводимый пример .