Как выбрать несколько ячеек из pandas DataFrame? - PullRequest
1 голос
/ 15 апреля 2020

У меня есть следующий фрейм данных:

a = pd.DataFrame({'a': {0: 2, 1:3, 2: 5},'b': {0: 5, 1:3, 2:6}, 'c': {0: 2, 1:1, 2:2}})
a
OUT:
    a   b   c
0   2   5   2
1   7   3   1
2   5   6   2

, и у меня есть следующие позиции:

index_coords = [0, 1]
columns_coords = ['b', 'b']

Я хотел бы получить:

b  0    5
b  1    3

I использовал следующее:

a.unstack(-1).loc[[(col, row) for col, row in zip(columns_coords, index_coords)]]
b  0    5
b  1    3

Меня интересует более прямой метод, что-то вроде (если существует):

a.get_by_coords(index_coords, columns_coords)

Я хочу выяснить, существует ли такой.

Ответы [ 2 ]

1 голос
/ 15 апреля 2020

IIU C stack с reindex + swaplevel

a.stack().reindex(pd.MultiIndex.from_arrays([index_coords,columns_coords])).swaplevel(i=0,j=1)
b  0    5
   1    3
dtype: int64
1 голос
/ 15 апреля 2020

Я думаю, что не существует в n pandas, ваше решение хорошо. Также должно быть проще:

print (a.unstack(-1).loc[list(zip(columns_coords, index_coords))])
b  0    5
   1    3
dtype: int64

Закрыть, что вам нужно, выберите MultiIndex.from_arrays:

#swapped columns, index lists
mux = pd.MultiIndex.from_arrays([columns_coords,index_coords])
print (a.unstack(-1).loc[mux])
b  0    5
   1    3
dtype: int64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...