Pandas将DataFrames与索引和列的逐元素匹配相乘

时间:2017-03-21 20:17:03

标签: pandas dataframe multiplication elementwise-operations

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

最好/最快的方式是什么?现实矩阵是巨大的,DF2相对稀疏。

1 个答案:

答案 0 :(得分:3)

我认为你需要矢量化函数https://github.com/apache/logging-log4j2/blob/master/log4j-nosql/pom.xml

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