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

Python初学者求助:如何为Pandas DataFrame各列元素分别对应指定数值相乘

按列批量乘法的Pandas实现方案

Hey there! 作为Python和Pandas的新手,这种按列对应数值做乘法的需求其实非常常见,而且Pandas提供了简洁又灵活的实现方式,完全适配你提到的n列场景,下面一步步给你演示:

1. 先复现你的示例DataFrame

首先我们先把你给出的DataFrame构造出来,方便你直接测试:

import pandas as pd

# 构造目标DataFrame
df = pd.DataFrame(
    data={
        'a': [22, 25, 15],
        'b': [20, 29, 30],
        'c': [18, 7, 20]
    },
    index=['2021-01-01', '2021-01-02', '2021-01-03']
)

2. 定义列与乘数的映射关系

不管你有多少列,只需要用一个字典来存储列名: 对应乘数的关系,比如你的需求就是:

column_multipliers = {
    'a': 100,
    'b': 200,
    'c': 300
}

后续如果新增列,只需要在这个字典里添加对应的键值对就行,非常灵活。

3. 执行批量乘法操作

Pandas的mul()方法(或者直接用*运算符)会自动根据列名匹配字典里的乘数,完成逐列的乘法:

方法一:使用mul()方法(推荐,语义更清晰)

df_result = df.mul(column_multipliers)

方法二:直接用乘法运算符

df_result = df * pd.Series(column_multipliers)

两种方法的效果完全一致,执行后得到的结果如下:

a     b     c
2021-01-01  2200  4000  5400
2021-01-02  2500  5800  2100
2021-01-03  1500  6000  6000

额外说明

  • 如果你的字典里只包含部分列,Pandas只会对这些列执行乘法,其他列保持原样;
  • 如果想确保所有列都被处理,只需要把所有列名都添加到column_multipliers字典中即可;
  • 这个方案完全支持任意n列的场景,不需要修改核心代码,只需要维护好乘数字典。

内容的提问来源于stack exchange,提问作者stevearama

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 06:02:48