Pandas:根据包含列名的另一列获取列

时间:2021-06-09 16:51:26

标签: python pandas

我正在编写脚本以进行定价。有一个包含数量列表的数据框:

<头>
姓名 音量 区域
木材 133 256
55 330

(还有 1800 多行这样的)

我需要做的是在包含“真实”数量的 df 中创建第三列。 几乎,在某些材料上是体积,在其他材料上是面积。

<头>
姓名 音量 区域 数量
木材 133 256 133
55 330 330

到目前为止,我想创建一个字典:

my_dict = {'Wood':'Volume', 'Steel':'Area'}

使用地图(或替换)我将其放入 df 中的一列:

<头>
姓名 音量 区域 数据字段
木材 133 256 音量
55 330 面积

现在,我将如何根据 Datafield 所说的将数量放入 Quantity 列中?

我试过了

df['数量'] = df[df['数据字段']]

但是,它崩溃了,我被卡住了。

1 个答案:

答案 0 :(得分:1)

尝试:

df['QTY'] = df.lookup(df.index, df['Datafield'])

替代方案:

df['QTY'] = df.apply(lambda x: x[x['Datafield']],1)

通过熔化的另一种选择:

k = df.melt('Datafield')
df['QTY'] = k[k.Datafield.eq(k.variable)]['value'].values
输出:
   Name  Volume  Area Datafield  QTY
0   Wood     133   256    Volume  133
1  Steel      55   330      Area  330
相关问题