заполнить группу с помощью среднего номера этого ярлыка - PullRequest
0 голосов
/ 04 февраля 2020

Допустим, у меня есть

v1  v2 v3  label 

3   Nan      1
4    2       2
3    3       2 
2    4       1
4    5       1

Я хочу заполнить v2 Nan ​​средой целевой метки (1).

, так что это будет 4 + 5 // 2 = 4.5

grouped = train[['V0005','label']].groupby('label') 
train[na_list[0]] = train[na_list[0]].fillna(grouped[na_list[0]].median())[targetlabel]

застрял здесь

1 Ответ

0 голосов
/ 04 февраля 2020

Используйте DataFrame.transform с DataFrame.fillna:

#if necessary convert to numeric
train = train.apply(lambda x: pd.to_numeric(x, errors='coerce'))

train = train.fillna(train.groupby('label').transform('median'))
print (train)
   v1   v2  label
0   3  4.5      1
1   4  2.0      2
2   3  3.0      2
3   2  4.0      1
4   4  5.0      1

Если хотите указать только некоторые столбцы для замены:

cols = ['v2']
train[cols] = train[cols].fillna(train.groupby('label')[cols].transform('median'))
print (train)
...