我有两个具有几乎相同的行和索引的数据帧。 df1:
Product AU-1 AU-2 AU-3
PROD1 5 7 8
PROD2 4 7 2
PROD3 2 60 7
df2:
Product AU-1 AU-2 AU-3
PROD1 100 200 111
PROD2 757 7575 908
common 10 20 30
PROD3 656 657 6565
我想要得到的输出:
Product AU-1 AU-2 AU-3
PROD1 100.5 201.4 113.4
PROD2 757.4 7576.4 908.6
common 0 0 0
PROD3 656.2 669 6567.1
每个单元格的公式:
each cell value of df2 + (corresponding "common" value * corresponding df1 value/100)
PROD1和AU-1的示例
100 + (5*10/100) = 100.5
如何以最有效的方式做到这一点?
答案 0 :(得分:0)
如果Product
当前不是索引,则使其成为索引,以便在进行乘法运算时可以获得索引对齐,然后从那里开始执行公式很简单。
df1, df2 = (d.set_index('Product') for d in (df1, df2))
df2.add(df1.mul(df2.loc['common']).div(100)).fillna(0)
AU-1 AU-2 AU-3
Product
PROD1 100.5 201.4 113.4
PROD2 757.4 7576.4 908.6
PROD3 656.2 669.0 6567.1
common 0.0 0.0 0.0