基于两个熊猫数据框之间的公式的计算

时间:2020-02-06 18:33:11

标签: python pandas

我有两个具有几乎相同的行和索引的数据帧。 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

如何以最有效的方式做到这一点?

1 个答案:

答案 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