我遇到多标签分类问题。
我要删除数据框的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行?
谢谢
答案 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)