我试图删除Pandas数据框中两列中任何一列都没有零的所有行。我的数据帧从0索引到620。这是我的代码:
for index in range(0, 621):
if((zeroes[index,1] != 0) and (zeroes[index,3] != 0)):
del(zeroes[index,])
我一直收到一个关键错误。 键错误:(0,1)
我的导师建议我改变范围来测试,看看我的数据帧中是否有坏线。是的。我检查了数据帧的尾部,然后将范围改为(616621)。然后我得到了关键错误:(616,1)。在
有人知道我的代码有什么问题吗?或者为什么我会得到一个关键错误?在
此代码还生成一个键错误(0,1):
^{pr2}$
不要在这里使用手动
for
循环。您的错误可能是因为df.__getitem__((x, y))
,实际上是df[x, y]
调用的,没有任何意义。在相反,使用矢量化操作和布尔索引。例如,要删除列1或列3不等于0的行:
这是因为
eq(0)
为具有任何True
值的行创建一个布尔值的数据框,该数据框表示等于零,any(1)
筛选器。在完整的形式是},以获得更清晰的结果。有关更多详细信息,请参阅^{} 的文档。在
df.iloc[:, [1, 3]].eq(0).any(axis=1)
,或者{相关问题 更多 >
编程相关推荐