替换中缺少的数据Pandas.DataFrame不起作用

2024-09-27 19:25:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我在挖Kaggle's Titanic excercise。在

我有一个熊猫.DataFrame哪个列“Age”分散了一些NaN'值,而另一个名为IsAlone的列,其值是1或{},这取决于该船上的个人规则。在

我试图用孤独者的平均年龄来替换第NaN列上的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()

对那些不孤单的人也是一样:

^{pr2}$

但是这根本不起作用,列Age仍然具有相同的NaN值。在

有什么想法吗?在


Tags: dataframedfage规则trainnanboolastype
1条回答
网友
1楼 · 发布于 2024-09-27 19:25:02

问题是原始帧的副本上的值发生了更改。有关详细信息,请参阅Returning a view versus a copy。如文件所示:

When setting values in a pandas object, care must be taken to avoid what is called chained indexing.

要更改原始帧的视图上的值,可以执行以下操作:

j = df_train.IsAlone.astype(bool) & df_train.Age.isnull()
i = df_train.IsAlone.astype(bool) & ~df_train.Age.isnull()
df_train.loc[j, 'Age'] = df_train.loc[i, 'Age'].mean()

相关问题 更多 >

    热门问题