我正在研究著名的Titanic dataset。
我正在尝试用X.Age.isna()
填充Avg_Age_byTitle
NaN值,这是我使用X.groupby('Name').mean()['Age']
Avg_Age_byTitle =
Name
Capt 70.000000
Col 58.000000
Don 40.000000
Dr 42.000000
Jonkheer 38.000000
Lady 48.000000
Major 48.500000
Master 4.574167
Miss 21.773973
Mlle 24.000000
Mme 24.000000
Mr 32.368090
Mrs 35.898148
Ms 28.000000
Rev 43.166667
Sir 49.000000
the Countess 33.000000
Name: Age, dtype: float64
我尝试了这个X.Age[Avg_Age_byTitle[X.Name[ X.Age.isna()]]]
,它返回series
,其中Age作为索引,NaN作为值。怎么了?
答案 0 :(得分:0)
您需要的IIUC:
df['Age'] = df.groupby('Pclass')['Age'].apply(lambda x: x.fillna(x.mean())).round(1)
这根据Pclass
组的平均值填充了年龄的NaN。
答案 1 :(得分:0)
鉴于 X 和 Avg_Age_byTitle 都以 Name 作为索引,您可以尝试:
X[['Age']] = X[['Age']].fillna(Avg_Age_byTitle)
答案 2 :(得分:0)
谢谢。 解决方案:
X.Age = X.groupby(['Name']).Age.apply(lambda X : X.fillna(X.mean()))