在python中使用条件删除行

时间:2019-02-28 16:12:39

标签: python pandas conditional delete-row

我遇到多标签分类问题。

我要删除数据框的35列(除外 ['Doc']列)中所有值(0)的行。

数据框示例

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)

没有标签= 60的no.docs

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

谢谢

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

如果列总和(第一列除外)为0,则可以删除行。您可以尝试

df2.drop(df2[df2.loc[:,1:].sum(axis=1) == 0].index)