我知道如何在两个Pandas数据帧之间进行逐元素乘法。然而,当两个数据框的维度不兼容时,情况会变得更加复杂。例如下面的df * df2
很简单,但是df * df3
就有问题:
df = pd.DataFrame({'col1' : [1.0] * 5,
'col2' : [2.0] * 5,
'col3' : [3.0] * 5 }, index = range(1,6),)
df2 = pd.DataFrame({'col1' : [10.0] * 5,
'col2' : [100.0] * 5,
'col3' : [1000.0] * 5 }, index = range(1,6),)
df3 = pd.DataFrame({'col1' : [0.1] * 5}, index = range(1,6),)
df.mul(df2, 1) # element by element multiplication no problems
df.mul(df3, 1) # df(row*col) is not equal to df3(row*col)
col1 col2 col3
1 0.1 NaN NaN
2 0.1 NaN NaN
3 0.1 NaN NaN
4 0.1 NaN NaN
5 0.1 NaN NaN
在上述情况下,如何将df的每一列与df3.col1相乘?我的尝试是:我尝试复制df3.col1 len(df.columns.values)次,以获得与df相同维度的数据框:
df3 = pd.DataFrame([df3.col1 for n in range(len(df.columns.values)) ])
df3
1 2 3 4 5
col1 0.1 0.1 0.1 0.1 0.1
col1 0.1 0.1 0.1 0.1 0.1
col1 0.1 0.1 0.1 0.1 0.1
但是这将创建一个3*5的数据框,而我需要的是5*3。我知道我可以使用df3.T()
来获取所需的结果,但我认为这不是最快的方法。