Pandas如何对传入列表指定的多列批量执行相同计算
Pandas 批量生成预期销售额计算列实现
直接按如下逻辑编写即可,支持传入任意列名列表,自动筛选名称含Group的列参与计算,不会修改Other等无关列:
- 遍历传入的列名列表,通过关键词匹配筛出需要计算的Group列
- 自动提取Group列对应的字母后缀,按
Expected Sales {letter}格式生成新列名 - 逐行计算Group列与Price列的乘积作为新列值
import pandas as pd # 原始示例数据构造 data = [(3,5,7), (2,4,6), (5,8,9.2)] df = pd.DataFrame(data, columns = ['Group A','Group B','Group C']) df['Fruit'] = ('apples', 'bananas', 'pears') df['Price'] = (1, 0.5, 2) df['Other'] = ("blah1", "blah2", "blah3") # 核心计算逻辑 # 此处可替换为你需要传入的任意列名列表,示例传入全量列 input_columns = df.columns.tolist() for col in input_columns: # 仅处理列名包含'Group'的字段 if 'Group' in col: # 提取列名中Group后的字母标识 letter = col.split()[-1] # 计算生成对应预期销售额列 df[f'Expected Sales {letter}'] = df[col] * df['Price']
执行后DataFrame新增3个目标计算列,计算结果如下:
| Group A | Group B | Group C | Fruit | Price | Other | Expected Sales A | Expected Sales B | Expected Sales C |
|---|---|---|---|---|---|---|---|---|
| 3 | 5 | 7.0 | apples | 1.0 | blah1 | 3.0 | 5.0 | 7.0 |
| 2 | 4 | 6.0 | bananas | 0.5 | blah2 | 1.0 | 2.0 | 3.0 |
| 5 | 8 | 9.2 | pears | 2.0 | blah3 | 10.0 | 16.0 | 18.4 |
若你的Group列命名规则和示例不一致,只需调整
letter变量的提取逻辑即可适配,其余计算逻辑无需改动。
内容的提问来源于stack exchange,提问作者Primer4662
相关产品推荐
相关产品推荐

