这里推荐使用.loc
,因为方法df.Age.isnull()
, df.Gender == i
和df.Pclass == j+1
可能返回数据帧切片的视图或可能返回副本。这会使大熊猫感到困惑。
如果不使用.loc
,最终将.loc
调用所有3个条件,这将导致您遇到一个称为链式索引的问题。但是,当您使用.loc
时, .loc
一步即可访问所有条件,而熊猫不再感到困惑。
您可以在pandas文档中阅读有关此内容的更多信息以及不使用.loc
会导致操作失败的示例。
简单的答案是,尽管您通常可以不用使用.loc
而是简单地键入(例如)
df['Age_fill'][(df.Age.isnull()) & (df.Gender == i) & (df.Pclass == j+1)] \
= median_ages[i,j]
您将始终收到SettingWithCopy
警告,您的代码对此会有些混乱。
以我的经验, .loc
花了我一段时间才让我明白,更新代码有点烦人。但这确实非常简单而且非常直观: df.loc[row_index,col_indexer]
。
有关更多信息,请参见有关索引和选择数据的pandas文档。
0
谁能用下面的例子解释为什么loc在python熊猫中使用?