Выберите столбцы с указанными значениями c в pandas DataFrame - PullRequest
2 голосов
/ 10 апреля 2020

В моем DataFrame есть несколько столбцов со значениями 0 и 1

    name    a   b   c   d   e
0   one     1   0   1   0   0
1   two     0   0   1   0   0
2   three   0   0   1   0   1

Как выбрать столбцы, в которых хотя бы одно значение равно 1? Но должны быть выбраны и другие столбцы (которые являются строками или имеют значения не только 0 и 1).

Я пробовал это выражение

df.iloc[:, [(clm == 'name') | (1 in df[clm].unique()) for clm in df.columns]]

Out:
    name  a  c  e
0    one  1  1  0
1    two  0  1  0
2  three  0  1  1

Но это не очень хорошо, потому что я явно выбираю столбец 'имя'

1 Ответ

2 голосов
/ 10 апреля 2020

Если возможно, удалите все столбцы только с 0 значениями, сравните значения на DataFrame.ne для не равных и верните хотя бы один True на столбцы в DataFrame.loc :

df = df.loc[:, df.ne(0).any()]
print (df)
    name  a  c  e
0    one  1  1  0
1    two  0  1  0
2  three  0  1  1

Подробности :

print (df.ne(0))
   name      a      b     c      d      e
0  True   True  False  True  False  False
1  True  False  False  True  False  False
2  True  False  False  True  False   True

print (df.ne(0).any())
name     True
a        True
b       False
c        True
d       False
e        True
dtype: bool
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...