【发布时间】:2014-09-16 16:46:08
【问题描述】:
我正在挖掘Kaggle's Titanic excercise。
我有一个 pandas.DataFrame,其中“年龄”列有一些分散的 NaN' 值,另一个名为 IsAlone 的列是我创建的,其值是 1 或 0,这取决于该人独自在那艘船上个人规则。
我正在尝试将 Age 列上的 NaN 值替换为独处者的平均年龄,以及不独处者的平均年龄。目的只是练习 pandas DataFrame,根据规则替换 NaN 值。
我对那些孤独的人这样做:
df_train[(df_train.IsAlone.astype(bool) & df_train.Age.isnull() )].Age = \
df_train[(df_train.IsAlone.astype(bool) & ~df_train.Age.isnull() )].Age.mean()
对于那些并不孤单的人也是如此:
df_train[(~df_train.IsAlone.astype(bool) & df_train.Age.isnull() )].Age = \
df_train[(~df_train.IsAlone.astype(bool) & ~df_train.Age.isnull() )].Age.mean()
但这根本不起作用,Age 列仍然具有相同的NaN 值。
对此有什么想法吗?
【问题讨论】:
-
显示示例数据和预期结果。
-
试试
df_train.loc[ that condition here, 'Age'] = whatever -
@behzad.nouri 效果很好!谢谢。能否请您详细说明一个简短的答案以获得奖品?
标签: python pandas dataframe nan boolean-logic