我有两个数据框如下所示;我想将 df1 的每一列与 df2 中相应行中的每个值相乘。每次都应该产生一个新的列。 (最好用一个例子来解释)。
Df1(在我的实际问题中有 +1000 行)
'Fert 1' 'Fert 2' 'Fert 3'
A 1000 900 800
B 100 90 80
C 10 9 8
D 0.1 0.9 0.8
Df2(行名称与 df1 列名称相同的较小 df)
'L1' 'L2'
'Fert 1' 1 0.5
'Fert 2' 2 0
'Fert 3' 1 0.5
期望的结果:基本上我想要 df1 乘以 df2 并展开(我希望列名是多索引的)。我可以使用嵌套循环来完成它,尽管我无法通过这种方式获得正确的列标题。循环似乎是一种低效的方法,因为它在我的大数据集上变慢了。我希望它可以使用合并或连接来完成,但我无法解决。
'Fert 1' 'Fert 2' 'Fert 3'
'L1' 'L2' 'L1' 'L2' 'L1' 'L2'
A 1000 500 1800 0 800 400
B 100 50 180 0 80 40
C 10 5 18 0 8 4
D 0.1 0.05 1.8 0 0.8 0.4
感谢您的帮助!
最佳答案
通过 DataFrame.stack
创建 MultiIndex
, 按 DataFrame.reindex
重复列所以可能是 Series
与 DataFrame.mul
的倍数:
s = Df2.stack()
df = Df1.reindex(s.index, axis=1, level=0).mul(s)
print (df)
'Fert 1' 'Fert 2' 'Fert 3'
'L1' 'L2' 'L1' 'L2' 'L1' 'L2'
A 1000.0 500.00 1800.0 0.0 800.0 400.0
B 100.0 50.00 180.0 0.0 80.0 40.0
C 10.0 5.00 18.0 0.0 8.0 4.0
D 0.1 0.05 1.8 0.0 0.8 0.4
关于python - 如何将数据框中的每一列与另一个数据框 Pandas 中的一行相乘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58975135/