熊猫:乘以数据帧

时间:2017-04-30 14:32:41

标签: python python-2.7 pandas dataframe matrix-multiplication

我试图将整个数据帧大小40行* 600列乘以pandas.core.series.Series,其中包含40行且只有一列。所以我的目标是将所有行乘以唯一的行。它给了我一个错误。

operands could not be broadcast together with shapes (23560,) (589,)

[In] df1:
[out]
Index             col1 
2065-12-20     12 days
2061-10-31     12 days
2045-11-28     70 days 
2043-10-31     11 days
2040-07-30     21 days
2049-06-30     64 days 
2036-01-31     14 days 

[In] df2: 
Index             col1    col2   etc.... 
2065-12-20         14      120
2061-10-31         18      800
2045-11-28         19      580
2043-10-31         21      12
2040-07-30         44      21
2049-06-30         1.2     17
2036-01-31         61.8    61 


[in] k = df1 * df2
[out] operands could not be broadcast together with shapes (23560,) (589,)

我最终想要

 Index             col1        col2   etc.... 
2065-12-20         14*12      120*12
2061-10-31         18*12      800*12
2045-11-28         19*70      580*70
2043-10-31         21*11      12*11
2040-07-30         44*21      21*21
2049-06-30         1.2*64     17*64
2036-01-31         61.8*14    61*61

这可能是非常基本的,但我正在与它混合......这是因为我的df1是在几天?如何将其转换为常规数字? 谢谢

1 个答案:

答案 0 :(得分:2)

使用mul method在两个DataFrame之间执行逐元素乘法:

k = df1.mul(df2)

如果由于第一个DataFrame在几天内有列,你仍然遇到问题,那么在执行逐元素乘法步骤之前,你可以convert it to an int或浮动:

import numpy as np
df1.col1 = (df1.col1.values / np.timedelta64(1, 'D')).astype(int)