如何优雅实现索引与列名对齐的2D DataFrame与1D Series相乘
Pandas DataFrame与Series按列对齐乘法的优雅实现
问题场景
现有二维DataFrame df1(行索引为1-4,列名为A、B),以及以df1列名为索引的一维Series df2(存储对应列的系数),需要实现按列匹配的乘法运算,得到逐列缩放后的结果。
数据构造
先构造示例数据:
import pandas as pd # 创建df1 df1 = pd.DataFrame( data={'A': [1, 2, 3, 4], 'B': [5, 6, 7, 8]}, index=[1, 2, 3, 4] ) # 创建df2(提取为Series,索引对应df1的列名) df2 = pd.DataFrame( data={'Coef': [10, 100]}, index=['A', 'B'] )['Coef']
核心解法
直接使用Pandas的mul()方法,通过指定axis='columns'参数实现按列名对齐的乘法:
df3 = df1.mul(df2, axis='columns')
结果展示
执行后得到的df3如下:
| Index | A | B |
|---|---|---|
| 1 | 10 | 500 |
| 2 | 20 | 600 |
| 3 | 30 | 700 |
| 4 | 40 | 800 |
说明
mul()方法的axis='columns'参数指定以列名为对齐依据,让df1的每一列自动匹配df2中索引相同的系数并完成乘法,完全符合简洁优雅的实现需求。
内容的提问来源于stack exchange,提问作者user2020742
相关产品推荐
相关产品推荐

