在python中删除带有条件的行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在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行?

谢谢

答案

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

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

如果列总和(除了第一个)为0,您可以删除行。您可以尝试这样做

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

以上是关于在python中删除带有条件的行的主要内容,如果未能解决你的问题,请参考以下文章

如何删除具有特定条件的行? [复制]

带有子查询的 MySQL 条件更新

pandas如何删除指定行

常用python日期日志获取内容循环的代码片段

python覆盖模块可以有条件地忽略单元测试中的行吗?

使用带有 viewpager 的异步任务时的竞争条件