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

Pandas如何复制指定列表头到新增计算列适配每月变动表头

解决方案

核心思路是通过列名的命名规则自动匹配对应列,无需硬编码月份名称或列位置,完全适配动态变化的月度表头。

推荐实现代码(最稳健方案)

import pandas as pd
df = pd.read_excel('Sale.xlsx')

# 自动筛选所有后缀为-sale的销售列
sale_cols = [col for col in df.columns if col.endswith('-sale')]
# 提取每个销售列对应的月份前缀
months = [col.split('-')[0] for col in sale_cols]

# 循环计算每个月总销售额,直接用月份作为新列名
for month in months:
    df[month] = df[f"{month}-sale"] * df[f"{month}-price"]

df.head()

方案说明

  • 只要你的表头一直遵循[月份]-sale、[月份]-price的命名规则,后续新增月份无需修改代码逻辑,会自动识别计算
  • 避免了原写法中硬编码列位置的问题,不会因为列顺序调整、列数量增减出现计算错误
  • 不需要先生成数字列名再修改,一步到位得到符合要求的结果

补充方案(针对已生成数字列名的场景)

如果你已经通过原代码生成了列名为7、8、9的结果,只想修改这几列的表头,可以用以下代码实现:

# 提取第2-4列(索引为1、2、3,pandas列索引从0开始)的月份前缀
new_col_names = [col.split('-')[0] for col in df.columns[1:4]]
# 替换第7-9列的列名
df.columns = df.columns[:6].tolist() + new_col_names

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:24:02