【发布时间】:2022-01-21 10:43:57
【问题描述】:
数据集包含一个 Pclass 列,其值为 (1, 2, 3) 和 Age。Age 列有一些空值。 我想用不同班级的人的中位年龄替换那些空值。 一等人的平均年龄是37岁,二等人是29岁,三等人是24岁。
所以这是我想要做的代码:
def fill_age(x):
if pd.isna(x['Age']) and x['Pclass'] == 1:
return 37
elif pd.isna(x['Age']) and x['Pclass'] == 2:
return 29
elif pd.isna(x['Age']) and x['pclass'] == 3:
return 24
else:
return x['Age']
df['Age'] = df.apply(fill_age)
但这是我得到的错误:
KeyError Traceback (most recent call last)
<ipython-input-126-7375a6b3c119> in <module>
----> 1 df['Age'] = df.apply(fill_age)
KeyError: 'Age'
请让我知道我做错了什么。 提前谢谢你。
【问题讨论】:
-
提示:当
fill_age在内部被df.apply调用时,你期望什么会被传递为x?df.apply的文档对此有何评论?您希望它是数据框的一行还是一列?文档如何说你应该指定这个?
标签: python pandas dataframe if-statement lambda