У меня есть фрейм данных, похожий на этот:
import pandas as pd
import numpy as np
d = {'category': [1, 1, 2, 1, 3, 2], 'cost': [33, 33, 18, np.nan, 8, np.nan]}
df = pd.DataFrame(data=d)
category cost
0 1 33.0
1 1 33.0
2 2 18.0
3 1 NaN
4 3 8.0
5 2 NaN
Я хотел бы заменить NaN в столбце стоимости на основе медианы, сгруппированной по категориям (df[['cost', 'category']].groupby(['category']).median()
).Таким образом, в примере первый NaN (строка 3) будет заменен на 33, а второй (строка 5) будет заменен на 18.
Так что сделайте что-то вроде этого:
df['field'] = df.apply(lambda row: get_median(row), axis=1)
Нотолько для значений nan