gpt4 book ai didi

python - 通过从其他 DataFrame 中选择值来在 Pandas DataFrame 中填充 NaN

转载 作者:太空宇宙 更新时间:2023-11-03 11:16:38 25 4
gpt4 key购买 nike

我正在玩弄泰坦尼克号数据集,并试图填写年龄值。我的数据框看起来像:

 Dataframe df

Survived Pclass Age SibSp Parch Fare male Q S Title
0 0 3 22.0 1 0 7.2500 1 0 1 Mr
1 1 1 38.0 1 0 71.2833 0 0 0 Mrs
2 1 3 26.0 0 0 7.9250 0 0 1 Miss
3 1 1 35.0 1 0 53.1000 0 0 1 Mrs
4 0 3 35.0 0 0 8.0500 1 0 1 Mr
5 0 3 NaN 0 0 8.4583 1 1 0 Mr

DataFrame age_df
3 1 2
Mr 28.7249 41.5805 32.7683
Mrs 33.5152 40.8824 33.6829
Miss 16.1232 30 22.3906
Master 5.35083 5.30667 2.25889
Don 40 40 40
Rev 43.1667 43.1667 43.1667
Dr 42 43.75 38.5
Mme 24 24 24
Ms 28 28 28
Major 48.5 48.5 48.5
Lady 48 48 48
Sir 49 49 49
Mlle 24 24 24
Col 58 58 58
Capt 70 70 70
Countess 33 33 33
Jonkheer 38 38 38

我想根据 df['Title']df[ 用 age_df 中的相应值填充 df['Age'] 缺失值'Pclass']

我想出了这个,但没有一个 NaN 被覆盖。

for tit in df['Title'].unique():
for cls in [1,2,3]:
df.loc[ (df['Age'].isna() == True) &
(df['Title'] == tit) &
(df['Pclass'] == cls)]['Age'] = age_df.loc[tit][cls]

此外,我认为这不应该用嵌套循环来完成。我应该怎么做?

最佳答案

一种方法可能是将 applyifelse 条件一起使用,如下所示:

df['Age'] = df.apply(lambda row: age_df.loc[row.Title, row.Pclass] 
if pd.isnull(row.Age)
else row.Age, axis=1)

关于python - 通过从其他 DataFrame 中选择值来在 Pandas DataFrame 中填充 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50516390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com