Python 根据字符串-列值有条件地设置值

Python 根据字符串-列值有条件地设置值,python,pandas,Python,Pandas,我有一个由不同输出设置位置和值的数据框。我还有一个专栏,告诉我要使用哪个专栏。大概是这样的: location x y z best detroit 1 2 3 x chicago 3 4 5 y racine 2 4 3 z 我想根据best的值设置新列的值 差不多 location x y z best val detroit 1 2 3 x 1 chicago 3 4 5 y 4 racine 2 4 3 z 3 我该怎么做?不允许嵌套函

我有一个由不同输出设置位置和值的数据框。我还有一个专栏,告诉我要使用哪个专栏。大概是这样的:

location x y z best
detroit  1 2 3  x
chicago  3 4 5  y
racine   2 4 3  z 
我想根据best的值设置新列的值

差不多

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循环

使用:

输出

备选方案:

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