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

标签 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值:

结果 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/

相关文章:

python - 如何移动 Pandas 数据框列的单个值

Python Pandas 数据框分配

c - C 代码中的一个小错误,用于在不使用 * 运算符的情况下乘以 2 位二进制数

numpy - 为什么 Series.prod() 的结果为 0?

python - 如何从具有唯一键和值作为列表的字典中制作数据框?

python - 在 Pandas 中将索引从整数更改为日期时出现问题

mysql - 复制表时关键主要错误的重复条目

python - 如何将工作表转换为 Pandas 中的数据框?

java - NBody代码在Java中不起作用-我需要修复什么?

pandas - 对 pandas 数据框进行签名检查