Как проверить условие в списке столбцов? - PullRequest
0 голосов
/ 11 октября 2018

У меня есть список столбцов, и я хочу оставить только строки равными 1 (одинаковое условие для всех столбцов) для col1 или col2 или col3.

listColumnName=['col1','col2','col3']
myDF[(myDF[listColumnName[0]]==1) | (myDF[listColumnName[1]]==1) | (myDF[listColumnName[2]]==1)]

Как лучше всего использовать мой списокколонны очень большие?

myDF[myDF[listColumnName]==1]

1 Ответ

0 голосов
/ 11 октября 2018

Вы можете сравнить все столбцы, отфильтрованные по списку по подмножеству, по eq (==) с DataFrame.any - проверьте наличие хотя бы одного True в строке:

myDF = pd.DataFrame({
        'A':list('abcdef'),
        'col1':[4,1,4,5,5,4],
        'col2':[7,8,9,1,2,3],
        'col3':[1,3,5,7,4,0],
        'E':[5,3,6,9,2,4],
        'F':list('aaabbb')
})

print (myDF)
   A  col1  col2  col3  E  F
0  a     4     7     1  5  a
1  b     1     8     3  3  a
2  c     4     9     5  6  a
3  d     5     1     7  9  b
4  e     5     2     4  2  b
5  f     4     3     0  4  b

listColumnName=['col1','col2','col3']
df = myDF[myDF[listColumnName].eq(1).any(axis=1)]
print (df)
   A  col1  col2  col3  E  F
0  a     4     7     1  5  a
1  b     1     8     3  3  a
3  d     5     1     7  9  b

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

print (myDF[listColumnName])
   col1  col2  col3
0     4     7     1
1     1     8     3
2     4     9     5
3     5     1     7
4     5     2     4
5     4     3     0

print (myDF[listColumnName].eq(1))
    col1   col2   col3
0  False  False   True
1   True  False  False
2  False  False  False
3  False   True  False
4  False  False  False
5  False  False  False

print (myDF[listColumnName].eq(1).any(axis=1))
0     True
1     True
2    False
3     True
4    False
5    False
dtype: bool
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...