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

在上述情况下, ?

我尝试复制df3.col1len(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()地获取所需的东西,但是我认为这不是最快的方法。

回答:

In [161]: pd.DataFrame(df.values*df2.values, columns=df.columns, index=df.index)

Out[161]:

col1 col2 col3

1 10 200 3000

2 10 200 3000

3 10 200 3000

4 10 200 3000

5 10 200 3000

以上是 pandas:两个数据帧的元素乘法 的全部内容, 来源链接: utcz.com/qa/397714.html

回到顶部