我有两个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相对稀疏。
答案 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