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