You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何简洁地为Pandas DataFrame的每一列分别乘以不同的标量?

简洁实现Pandas DataFrame列级标量乘法

其实你已经找对了核心思路(用字典映射列和对应标量),但Pandas本身提供了更直接的方法,不需要额外构造同结构的DataFrame,一步就能完成需求~

最简洁的实现方式

直接利用Pandas的multiply()方法(或者更简洁的乘法运算符)配合标量字典即可,Pandas会自动根据列名匹配对应的标量,对每列执行乘法操作:

  1. 先定义列名与对应标量的字典:
scalar_map = {'col_1': n_1, 'col_2': n_2, ..., 'col_n': n_n}
  1. 执行乘法操作(两种写法任选其一):
# 写法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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 03:52:41