我有两个 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
值:
结果 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相对稀疏。
最佳答案
我认为你需要向量化函数 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
关于Pandas 将 DataFrame 与索引和列的元素匹配相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42937346/