【问题标题】:check if row value value is equal to column name and access the value of the column检查行值值是否等于列名并访问列的值
【发布时间】:2021-09-24 08:33:59
【问题描述】:
示例数据框 -
| col1 |
col2 |
col3 |
col4 |
colfromvaluestobepicked |
new col |
| 1 |
1 |
0 |
1 |
'col1' |
1 |
| 0 |
0 |
1 |
1 |
'col2' |
0 |
我想创建一个新列,其值基于 colfromvaluestobepicked ('col1') 是否为 col1,然后选择该 col 值并将其分配给新 col,依此类推。
我不知道如何做到这一点?
【问题讨论】:
标签:
python
python-3.x
pandas
【解决方案1】:
使用DataFrame.melt 替代lookup:
df1 = df.melt('colfromvaluestobepicked', ignore_index=False)
df['new']=df1.loc[df1['colfromvaluestobepicked'].str.strip("'") == df1['variable'],'value']
【解决方案2】:
试试这个:
df['new col'] = df.apply(lambda row: row[row['colfromvaluestobepicked']],axis =1)