Tjs01
Tjs01

Reputation: 477

Lookup values in cells based on values in another column

I have a pandas dataframe that looks like:

  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

I want to fetch the column value from Best_val for that row an use it as column name to subtract t from 1 to be stored in Value

Upvotes: 1

Views: 665

Answers (2)

cs95
cs95

Reputation: 402553

Use DataFrame.lookup for performance.

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

Upvotes: 1

Dani Mesejo
Dani Mesejo

Reputation: 61910

You could use 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)

Output

  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

Upvotes: 0

Related Questions