Как применить условие к пандам илоку - PullRequest
0 голосов
/ 11 мая 2018

Я выбираю столбцы 2 - end в панде DataFrame с iloc как

d=c.iloc[:,2:]

Теперь, как я могу применить условие к этому выбору? Например, если column1==1.

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Это называется смешанной индексацией, в которой вы хотите индексировать с помощью логических результатов в строках и позиции в столбцах.Я бы использовал loc, чтобы воспользоваться булевым индексированием для строк.Но это означает, что вам нужны значения имен столбцов для среза столбцов.

d.loc[d.column1 == 1, d.columns[2:]]

Если имена столбцов не уникальны, вы можете прибегнуть к страшному цепочечному индексу.

d.loc[d.column1 == 1].iloc[:, 2:]

Чтотакже может быть интуитивно понятно использовать query впоследствии:

d.iloc[:, 2:].query('column1 == 1')
0 голосов
/ 11 мая 2018

Вы можете использовать DataFrame.iloc, если необходимо отфильтровать первый столбец, выбрать по позиции, : означает здесь выбрать все строки:

c[c.iloc[:, 0] == 1]

Образец :

c = pd.DataFrame({'A':list('abcdef'),
                   'B':[4,5,4,5,5,4],
                   'C':[7,8,9,4,2,3],
                   'D':[1,3,5,7,1,0],
                   'E':[5,3,6,9,2,4],
                   'F':list('aaabbb')})

print (c)
   A  B  C  D  E  F
0  a  4  7  1  5  a
1  b  5  8  3  3  a
2  c  4  9  5  6  a
3  d  5  4  7  9  b
4  e  5  2  1  2  b
5  f  4  3  0  4  b

df = c[c.iloc[:, 3] == 1]
print (df)
   A  B  C  D  E  F
0  a  4  7  1  5  a
4  e  5  2  1  2  b
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...