#python #pandas #dataframe
#питон #панды #фрейм данных #python #pandas
Вопрос:
Все! У меня есть фрейм данных pandas, подобный этому:
A B
0 [1,2,3] 0
1 [2,3,4] 1
как мы можем видеть, столбец A представляет собой список, а столбец B — значение индекса. Я хочу получить столбец C, который индексируется на B из A:
A B C
0 [1,2,3] 0 1
1 [2,3,4] 1 3
Есть ли какой-нибудь элегантный способ решить эту проблему? Спасибо!
Ответ №1:
Используйте понимание списка с индексацией:
df['C'] = [x[y] for x, y in df[['A','B']].to_numpy()]
Или DataFrame.apply
, но это должно быть медленнее, если большой фрейм данных:
df['C'] = df.apply(lambda x: x.A[x.B], axis=1)
print (df)
A B C
0 [1, 2, 3] 0 1
1 [2, 3, 4] 1 3
Комментарии:
1. Отлично! Спасибо!