【发布时间】:2019-02-13 21:22:12
【问题描述】:
关于这个主题有很多帖子,但不幸的是,提供的解决方案(使用 loc)对我不起作用。在我的数据集中,我有特征“GarageYrBlt”,这是车库建造的年份;另一个特征是“YearBuilt”,即房屋建造的年份。 GarageYrBlt 有一些空值。
由于 GarageYrBlt 和 YearBuilt 高度相关,我试图将 GarageYrBlt 的空值替换为 YearBuilt 的相应值。
df.GarageYrBlt[df.GarageYrBlt.isnull()] = df.YearBuilt[df.GarageYrBlt.isnull()]
这给出了警告“A value is trying to be set on a copy of a slice from a DataFrame” 所以我尝试了如下所示的 .loc 方法,但没有任何变化。我仍然得到同样的错误。有什么建议吗?
df.loc[:,"GarageYrBlt"][df.GarageYrBlt.isnull()] = df.loc[:,"YearBuilt"][df.GarageYrBlt.isnull()].copy()
【问题讨论】:
-
看起来我使用 loc 错误,这似乎有效: data.loc[data.GarageYrBlt.isnull(),"GarageYrBlt"] = data.loc[data.GarageYrBlt.isnull(), “年份”]
-
你这里评论的用法是正确的,就是
df.loc[row_index, column_idx]。当您在原始问题中使用df.loc[...][...]时,第二组[]可能是导致复制切片警告的原因。
标签: python pandas dataframe slice isnull