#python #pandas #dataframe
#python #pandas #фрейм данных
Вопрос:
У меня есть фрейм данных pandas с 3 столбцами, и я хочу создать новый столбец следующим образом:
import pandas as pd
import numpy as np
np.random.seed(2019)
df = pd.DataFrame(np.random.randn(5,3), columns=['A','B','C'])
cols = df.abs().idxmax(axis = 1)
cols
0 C
1 A
2 A
3 B
4 B
dtype: object
Я хочу создать столбец, D
который принимает значение C
с индексом 0, A
с индексом 1 и т.д.. Другими словами, D
принимает значения из соответствующего столбца в соответствии с объектом cols
. Я уверен, что могу перебирать индексы и выбирать столбцы, но есть ли лучший способ сделать это?
Ответ №1:
Используйте DataFrame.lookup
:
print (df)
A B C
0 -0.217679 0.821455 1.481278
1 1.331864 -0.361865 0.685609
2 0.573761 0.287728 -0.235634
3 0.953490 -1.689625 -0.344943
4 0.016905 -0.514984 0.244509
df['D'] = df.lookup(df.index, cols)
print (df)
A B C D
0 -0.217679 0.821455 1.481278 1.481278
1 1.331864 -0.361865 0.685609 1.331864
2 0.573761 0.287728 -0.235634 0.573761
3 0.953490 -1.689625 -0.344943 -1.689625
4 0.016905 -0.514984 0.244509 -0.514984