2

我有两个 pandas DataFrame,其中一个具有索引和列,它们是另一个的子集。例如:

DF1 =

date        a     b    c
20170101    1.0   2.2  3
20170102    2.1   5.2  -3.0
20170103    4.2   1.8  10.0
...
20170331    9.8   5.1  4.5

DF2 =

date        a     c
20170101    NaN   2.1
20170103    4     NaN

我想要的是通过匹配索引和列来进行元素乘法。ie onlyDF1[20170103]['c']将乘以DF2[20170103]['c']等。

DF1生成的 DF 应与较大的 ( )具有相同的维度,并将缺失值DF2设置为原始DF1值:

result DF =

date        a     b    c
20170101    1.0   2.2  6.3
20170102    2.1   5.2  -3.0
20170103    16.8  1.8  10.0
...
20170331    9.8   5.1  4.5

最好/最快的方法是什么?现实生活中的矩阵很大,而 DF2 相对稀疏。

4

1 回答 1

3

我认为你需要矢量化函数mul

df = DF1.mul(DF2, fill_value=1)
print (df)
             a    b     c
date                     
20170101   1.0  2.2   6.3
20170102   2.1  5.2  -3.0
20170103  16.8  1.8  10.0
20170331   9.8  5.1   4.5
于 2017-03-21T20:19:15.177 回答