Доступ к записям во фрейме данных панд с помощью списка индексов

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

# My Original dataframe
import pandas as pd
dfTest = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9]])

Выход:

   0  1  2
0  1  2  3
1  4  5  6
2  7  8  9

Я могу предоставить список с строками и индексами столбцов, где находятся мои желаемые значения:

array_indices = [[0,2],[1,0],[2,1]]

Мой желаемый результат - серия:

3
4
8

Кто-нибудь может помочь?

1 ответ

Решение

Использование pd.DataFrame.lookup

dfTest.lookup(*zip(*array_indices))

array([3, 4, 8])

Который вы можете завернуть в pd.Series конструктор

pd.Series(dfTest.lookup(*zip(*array_indices)))

0    3
1    4
2    8
dtype: int64

Легкий вариант

i, j = np.array(array_indices).T
dfTest.values[i, j]

array([3, 4, 8])

Так же, как выше

pd.Series(dfTest.values[i, j])

0    3
1    4
2    8
dtype: int64
Другие вопросы по тегам