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

如何为Pandas DataFrame月度销售列批量添加分组序号列

实现方法

这里提供两种高效的实现方式,适配你的月度销售DataFrame需求:

方法一:逐列插入序号列(直观易理解)

先保存原始销售列的列表,避免插入新列后列顺序混乱,再根据每个列的位置计算对应序号,插入到目标列右侧:

import pandas as pd
import numpy as np

# 构造示例DataFrame(模拟你的大型CSV数据)
months = pd.date_range(start='2022-01', end='2034-12', freq='MS').strftime('%Y-%m')
df = pd.DataFrame(np.random.randint(100, 1000, size=(10, len(months))), columns=months)

# 保存原始销售列名
original_sales_cols = df.columns.tolist()

# 遍历每个原始列,计算序号并插入
for idx, col_name in enumerate(original_sales_cols):
    # 计算序号:前6个月为1,后续每12个月递增1
    if idx < 6:
        sequence = 1
    else:
        # 从第7个月开始,每12个月一组,序号从2开始累加
        sequence = 2 + ((idx - 6) // 12)
    
    # 插入序号列到当前销售列的右侧
    # 插入位置 = 原始列索引*2 +1(因每插入一列,后续列位置偏移1)
    df.insert(idx * 2 + 1, f"{col_name}_seq", sequence)

方法二:合并序号DataFrame(更高效,适合超大型数据)

先单独构造包含所有序号列的DataFrame,再与原始销售数据按列交替合并,减少多次插入操作的开销:

import pandas as pd
import numpy as np

# 构造示例DataFrame
months = pd.date_range(start='2022-01', end='2034-12', freq='MS').strftime('%Y-%m')
df = pd.DataFrame(np.random.randint(100, 1000, size=(10, len(months))), columns=months)

original_sales_cols = df.columns.tolist()

# 生成所有序号值
sequence_values = []
for idx in range(len(original_sales_cols)):
    if idx < 6:
        sequence_values.append(1)
    else:
        sequence_values.append(2 + ((idx - 6) // 12))

# 构造序号DataFrame
sequence_df = pd.DataFrame(
    [sequence_values] * len(df),
    columns=[f"{col}_seq" for col in original_sales_cols]
)

# 交替合并原始数据和序号数据
merged_column_order = []
for sales_col, seq_col in zip(original_sales_cols, sequence_df.columns):
    merged_column_order.append(sales_col)
    merged_column_order.append(seq_col)

df = pd.concat([df, sequence_df], axis=1)[merged_column_order]

关键逻辑说明

  • 序号计算规则:以列的位置索引(从0开始)为依据,前6个索引(对应2022年1-6月)直接赋值1;从第7个索引开始,通过(idx-6)//12计算间隔的12个月组数,加2得到对应序号(比如第7-18个月对应序号2,第19-30个月对应序号3,以此类推)
  • 两种方法都能保证每个销售列右侧紧挨着对应的序号列,且完全符合你的规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 02:05:23