我有一个数据框,其位置和值由各种输出设置。我也有一个专栏,告诉我我想使用哪一栏。像这样的东西:
location x y z best
detroit 1 2 3 x
chicago 3 4 5 y
racine 2 4 3 z
我想基于“最佳”值设置新列的值
类似
location x y z best val
detroit 1 2 3 x 1
chicago 3 4 5 y 4
racine 2 4 3 z 3
我该怎么做?不允许使用嵌套函数,自定义函数或for循环。
答案 0 :(得分:4)
df['val'] = df[['x','y','z']].lookup(df.index, df['best'])
输出
print(df)
location x y z best val
0 detroit 1 2 3 x 1
1 chicago 3 4 5 y 4
2 racine 2 4 3 z 3
替代:
df['val']=df[['x','y','z']].stack().loc[zip(df.index, df['best'])].values