Pandas 将数据帧与索引和列的逐元素匹配相乘

Pandas multiply DataFrames with element-wise match of index and column

我有两个 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

我想要的是通过匹配索引和列来逐元素乘法。即只有 DF1[20170103]['c'] 会乘以 DF2[20170103]['c'],等等

生成的 DF 应与较大的 DF (DF1) 具有相同的维度,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

best/fastest 的方法是什么?现实生活中的矩阵很大,DF2比较稀疏

我认为你需要向量化函数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