根据另一列中的值在单元格中查找值

时间:2018-12-28 13:37:12

标签: python pandas dataframe

我有一个熊猫数据框,看起来像:

  Best_val    A      B      C        Value(1 - Best_Val)
  A           0.1   0.29    0.3       0.9
  B           0.33  0.21    0.45      0.79
  A           0.16   0.71    0.56     0.84
  C           0.51   0.26    0.85     0.15

我想从Best_val获取该行的列值,并将其用作列名,以从1中减去t来存储在Value中

2 个答案:

答案 0 :(得分:1)

使用DataFrame.lookup来提高性能。

df['Value'] = 1 - df.lookup(df.index, df.BestVal)
df

  BestVal     A     B     C  Value
0       A  0.10  0.29  0.30   0.90
1       B  0.33  0.21  0.45   0.79
2       A  0.16  0.71  0.56   0.84
3       C  0.51  0.26  0.85   0.15

答案 1 :(得分:0)

您可以使用apply

import pandas as pd

data = [['A', 0.1, 0.29, 0.3],
        ['B', 0.33, 0.21, 0.45],
        ['A', 0.16, 0.71, 0.56],
        ['C', 0.51, 0.26, 0.85]]

df = pd.DataFrame(data=data, columns=['BestVal', 'A', 'B', 'C'])
df['Value'] = df.apply(lambda x: 1 - x[x.BestVal], axis=1)
print(df)

输出

  BestVal     A     B     C  Value
0       A  0.10  0.29  0.30   0.90
1       B  0.33  0.21  0.45   0.79
2       A  0.16  0.71  0.56   0.84
3       C  0.51  0.26  0.85   0.15