首页 > 解决方案 > 在python中删除带有条件的行

问题描述

我有一个多标签分类问题。

我想删除数据框的所有35 列中具有值 (0) 的行,除了['Doc'] 列。

数据框示例

Doc   Big    Small    Int    Bor   Drama
j2     0       0        0      0     0
i9     1       0        1      1     0
ui8    0       0        0      1     0
po4    0       1        0      0     0
po9    0       0        0      0     0

这是预期的结果

Doc   Big    Small    Int    Bor   Drama
i9     1       0        1      1     0
ui8    0       0        0      1     0
po4    0       1        0      0     0

这些是我要删除的行:

 j2     0       0        0      0     0
 po9    0       0        0      0     0

以下是我计算它们的方法:

rowSums = df.iloc[:,2:].sum(axis=1)
no_labelled = (rowSums==0).sum(axis=0)
print("no.docs with no label =", no_labelled)

no.docs 没有标签 = 60

如何从数据框中删除这 60 行?

谢谢

标签: pythonpandasconditionaldelete-row

解决方案


您可以只提取所需的数据框并将其分配给旧变量,而不是显式调用del

df =  df.loc[df.iloc[:, 1:].sum(axis=1) > 0, :]
print(df)

推荐阅读