I have the following dataframe:
df = pd.DataFrame(data={'flag': ['col3', 'col2', 'col2'],
'col1': [1, 3, 2],
'col2': [5, 2, 4],
'col3': [6, 3, 6],
'col4': [0, 4, 4]},
index=pd.Series(['A', 'B', 'C'], name='index'))
| index | flag | col1 | col2 | col3 | col4 |
|---|---|---|---|---|---|
| A | col3 | 1 | 5 | 6 | 0 |
| B | col2 | 3 | 2 | 3 | 4 |
| C | col2 | 2 | 4 | 6 | 4 |
For each row, I want to get the value when column name is equal to the flag.
| index | flag | col1 | col2 | col3 | col4 | col_val |
|---|---|---|---|---|---|---|
| A | col3 | 1 | 5 | 6 | 0 | 6 |
| B | col2 | 3 | 2 | 3 | 4 | 2 |
| C | col2 | 2 | 4 | 6 | 4 | 4 |
– Index A has a flag of col3. So col_val should be 6 because df['col3'] for that row is 6.
– Index B has a flag of col2. So col_val should be 2 because df['col2'] for that row is 2.
– Index C has a flag of col2. So col_val should be 4 because df['col2'] for that row is 3.