Pandas如何将Series的每个元素与DataFrame对应列的每个元素相乘
实现方案
你需要的矩阵逐列匹配索引相乘的运算,pandas内置的广播机制可以直接实现,不需要手动将Series复制扩展为DataFrame。运算时pandas会自动对齐Series的索引和DataFrame的列名,逐列完成元素级相乘。
代码实现
import pandas as pd # 初始化输入数据 series = pd.Series([0,10,0,100,1], index=list('abcde')) df = pd.DataFrame([[0.5,0.4,0.2,0.7,0.8], [0.4,0.5,0.1,0.1,0.5], [0.1,0.9,0.8,0.3,0.8] ], columns=list('abcde')) # 直接执行乘法运算即可得到目标结果 result = df * series
运算结果验证
得到的result输出如下,第一列a的取值为[0, 0, 0],完全符合你给出的计算规则:
| a | b | c | d | e |
|---|---|---|---|---|
| 0 | 4 | 0 | 70 | 0.8 |
| 0 | 5 | 0 | 10 | 0.5 |
| 0 | 9 | 0 | 30 | 0.8 |
Numpy实现版本
如果需要用numpy完成同样运算,可以用如下代码:
import numpy as np series_arr = series.values df_arr = df.values result_arr = df_arr * series_arr
内容的提问来源于stack exchange,提问作者Marco You
相关产品推荐
相关产品推荐

