#python #arrays #pandas #numpy #dataframe
#python #массивы #pandas #numpy #фрейм данных
Вопрос:
У меня есть 2d (в будущем это может быть 3d) массив с индексами. Допустим, это выглядит так:
[[1,1,1],
[1,2,2],
[2,2,3]]
И у меня есть фрейм данных pandas:
index, A, B
1, 0.1, 0.01
2, 0.2, 0.02
3, 0,3, 0.03
Я хочу получить массив numpy (или pandas df) со значениями из столбца A, нарезанными на основе массива numpy. Таким образом, результат будет здесь:
[[0.1,0.1,0.1],
[0.1,0.2,0.2],
[0.2,0.2,0.3]]
Я могу сделать это с помощью цикла, чтобы получить фрейм данных pandas:
pd.DataFrame(df.A[val].values for val in array)
Однако я ищу более эффективный способ сделать это. Есть ли лучший способ, позволяющий мне использовать весь массив индексов одновременно?
Ответ №1:
Вы можете сделать:
df.loc[a.ravel(),'A'].values.reshape(a.shape)
Вывод:
array([[0.1, 0.1, 0.1],
[0.1, 0.2, 0.2],
[0.2, 0.2, 0.3]])
Комментарии:
1. Отлично, это именно то, что я искал. Спасибо!