Удалите строки со всеми элементами нулей во всех столбцах, в исключительных случаях оставив один ненулевой столбец в pandas DF - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть панда Df с 2 миллионами строк * 10 столбцов.Я хочу удалить все нулевые элементы в строке для всех столбцов, кроме одного столбца с ненулевыми элементами.

Пример.Мой Df нравится:

Índex   Time    a   b   c   d   e
0       1       0   0   0   0   0
1       2       1   2   0   0   0 
2       3       0   0   0   0   0
3       4       5   0   0   0   0  
4       5       0   0   0   0   0   
5       6       7   0   0   0   0 

Что мне нужно:

Índex   Time        a   b   c   d   e
    0       2       1   2   0   0   0 
    1       4       5   0   0   0   0  
    2       6       7   0   0   0   0

Мои требования:
Требование 1:
Покидая 1-й столбец (Время), он должен проверять наличие нулевых элементов в каждой строке.Если все значения столбца равны нулю, удалите эту конкретную строку.
Требование 2:
Наконец, я хочу, чтобы мой индекс обновлялся должным образом

Что я пробовал:
У меня естьпросматривал эту ссылку .
Я понял используемую логику, но не смог воспроизвести результат для моего требования.

Я надеюсь, что будет простой способ сделатьоперация ...

1 Ответ

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

Используйте iloc для выбора всех столбцов без первого, comapre для не равно на ne и проверьте по крайней мере один True для строк на any для фильтра по boolean indexing, последний reset_index:

df = df[df.iloc[:, 1:].ne(0).any(axis=1)].reset_index(drop=True)

Альтернатива с удалением столбца Time:

df = df[df.drop('Time', axis=1).ne(0).any(axis=1)].reset_index(drop=True)

print (df)
   Time  a  b  c  d  e
0     2  1  2  0  0  0
1     4  5  0  0  0  0
2     6  7  0  0  0  0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...