Удаление строк с условными выражениями в python - PullRequest
0 голосов
/ 28 февраля 2019

У меня проблема с многослойной классификацией.

Я хочу удалить строки, имеющие значение (0) во всех из 35 столбцов информационного кадра, , за исключением ['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 строк из кадра данных?

Спасибо

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Вы можете удалить строки, если сумма столбцов (кроме первой) равна 0. Вы можете попробовать это

df2.drop(df2[df2.loc[:,1:].sum(axis=1) == 0].index)
0 голосов
/ 28 февраля 2019

Вы можете просто извлечь необходимый фрейм данных и присвоить его старой переменной, а не явно вызывать del:

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