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
相关产品推荐
相关产品推荐

