Удалить строки Pandas кадра данных, если значение столбцов диапазона 0 - PullRequest
1 голос
/ 23 марта 2020

Фрейм данных:

df = pd.DataFrame({'a':['NA','W','Q','M'], 'b':[0,0,4,2], 'c':[0,12,0,2], 'd':[22, 3, 34, 12], 'e':[0,0,3,6], 'f':[0,2,0,0], 'h':[0,1,1,0] })
df
    a   b   c   d   e   f   h
0   NA  0   0   22  0   0   0
1   W   0   12  3   0   2   1
2   Q   4   0   34  3   0   1
3   M   2   2   12  6   0   0

Я хочу удалить всю строку, если значение столбца b и всех столбцов e содержит 0

В основном Я хочу получить что-то вроде этого

a   b   c   d   e   f   h
1   W   0   12  3   0   2   1
2   Q   4   0   34  3   0   1
3   M   2   2   12  6   0   0

1 Ответ

1 голос
/ 23 марта 2020

Если вы хотите проверить от e до конца столбцов и b столбцов, добавленных с помощью DataFrame.assign, используйте DataFrame.loc для выбора, тест для не равных DataFrame.ne, а затем, если значения aby совпадают (это означает, что не все 0) с DataFrame.any и последним фильтром по boolean indexing:

df = df[df.loc[:, 'e':].assign(b = df['b']).ne(0).any(axis=1)]
print (df)
   a  b   c   d  e  f  h
1  W  0  12   3  0  2  1
2  Q  4   0  34  3  0  1
3  M  2   2  12  6  0  0
...