Метод Pandas loc() с логическим массивом на оси 1

Я экспериментирую с методом Pandas loc(), используемым с логическими массивами в качестве аргументов.

Я создал небольшой фрейм данных для игры:

    col1    col2    col3    col4
 0  a        1       2       3
 1  b       NaN     NaN      6
 2  c       NaN      8       9
 3  d       NaN     11       12
 4  e       13       14      15
 5  f       17      18       19
 6  g       21  2    2       23

И логический массив для использования на оси 1 для подмножества ряда столбцов:

 a1 = pd.Series([True, False, True, False])

Затем я попытался:

 df.loc[: , a1]

Я получил сообщение об ошибке:

IndexingError: Предоставлен невыровненный логический ключ серии

Как я могу применить логический массив для подмножества столбцов с loc()?


person im7    schedule 06.01.2017    source источник


Ответы (1)


Вам нужно преобразовать Series в numpy array с помощью values. :

print (df.loc[: , a1.values])
  col1  col3
0    a   2.0
1    b   NaN
2    c   8.0
3    d  11.0
4    e  14.0
5    f  18.0
6    g   2.0

Или нужно добавить index на df.columns для выравнивания index из Series по columns из DataFrame:

a1 = pd.Series([True, False, True, False], index=df.columns)
print (df.loc[: , a1])
  col1  col3
0    a   2.0
1    b   NaN
2    c   8.0
3    d  11.0
4    e  14.0
5    f  18.0
6    g   2.0
person jezrael    schedule 06.01.2017