我正在编写脚本以进行定价。有一个包含数量列表的数据框:
姓名 | 音量 | 区域 |
---|---|---|
木材 | 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['数据字段']]
但是,它崩溃了,我被卡住了。
答案 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