"带有至少一个z的Pandas数据帧的行过滤"

2024-05-01 21:45:15 发布

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

我试图删除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}$

Tags: and数据代码inpandasforindexif
1条回答
网友
1楼 · 发布于 2024-05-01 21:45:15

不要在这里使用手动for循环。您的错误可能是因为df.__getitem__((x, y)),实际上是df[x, y]调用的,没有任何意义。在

相反,使用矢量化操作和布尔索引。例如,要删除列1或列3不等于0的行:

df = df[df.iloc[:, [1, 3]].eq(0).any(1)]

这是因为eq(0)为具有任何True值的行创建一个布尔值的数据框,该数据框表示等于零,any(1)筛选器。在

完整的形式是df.iloc[:, [1, 3]].eq(0).any(axis=1),或者{},以获得更清晰的结果。有关更多详细信息,请参阅^{}的文档。在

相关问题 更多 >