如何简洁地为Pandas DataFrame的每一列分别乘以不同的标量?
简洁实现Pandas DataFrame列级标量乘法
其实你已经找对了核心思路(用字典映射列和对应标量),但Pandas本身提供了更直接的方法,不需要额外构造同结构的DataFrame,一步就能完成需求~
最简洁的实现方式
直接利用Pandas的multiply()方法(或者更简洁的乘法运算符)配合标量字典即可,Pandas会自动根据列名匹配对应的标量,对每列执行乘法操作:
- 先定义列名与对应标量的字典:
scalar_map = {'col_1': n_1, 'col_2': n_2, ..., 'col_n': n_n}
- 执行乘法操作(两种写法任选其一):
# 写法1:使用multiply方法,明确指定按列匹配 df = df.multiply(scalar_map, axis='columns') # 写法2:更简洁的运算符写法,效果完全一致 df *= scalar_map
示例演示
给你个具体的例子,方便理解:
import pandas as pd # 创建测试DataFrame df = pd.DataFrame({ 'col_1': [10, 20, 30], 'col_2': [40, 50, 60], 'col_3': [70, 80, 90] }) # 定义各列对应的标量 scalar_map = {'col_1': 2, 'col_2': 0.5, 'col_3': 3} # 执行乘法 df *= scalar_map print(df)
执行后输出结果:
col_1 col_2 col_3 0 20 20.0 210 1 40 25.0 240 2 60 30.0 270
为什么这个方法更好?
对比你原来的方案,这个方法不需要额外创建和原DataFrame结构一致的常量DataFrame,Pandas内部会自动完成列名匹配与标量广播的工作,代码更简洁,执行效率也更高,完全适配你使用的Python2.7.10和pandas0.24.2环境。
内容的提问来源于stack exchange,提问作者akrylic
相关产品推荐
相关产品推荐

