pandas中的loc函数

有人能解释一下为什么在python的pandas中使用loc函数吗?请举例如下所示:

for i in range(0, 2):  for j in range(0, 3):    df.loc[(df.Age.isnull()) & (df.Gender == i) & (df.Pclass == j+1),            'AgeFill'] = median_ages[i,j]

回答:

这里推荐使用.loc,因为df.Age.isnull()df.Gender == idf.Pclass == j+1这些方法可能会返回数据框的视图或副本,这可能会使pandas感到困惑。

如果不使用.loc,你将连续调用这三个条件,这会导致一个称为链式索引的问题。然而,当你使用.loc时,你可以一步访问所有条件,pandas就不会再感到困惑了。

你可以在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文档中的索引和选择数据部分。

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注