Доступ к записям во фрейме данных панд с помощью списка индексов
Я столкнулся с проблемой, что мне нужно только подмножество моего исходного кадра данных, который распределен по разным строкам и столбцам. Например:
# 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