熊猫根据字符串列值有条件地设置值

时间:2020-02-21 22:29:05

标签: python pandas

我有一个数据框,其位置和值由各种输出设置。我也有一个专栏,告诉我我想使用哪一栏。像这样的东西:

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

1 个答案:

答案 0 :(得分:4)

使用DataFrame.lookup

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