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

基于起始行号数组批量填充pandas DataFrame指定列的实现问题

实现方法

这里提供两种常用实现方式,都可以直接得到你要的结果:

方法1:切片循环赋值(逻辑直观,适合新手理解)

import pandas as pd

# 初始化数据
df = pd.DataFrame([['', 120], ['', 300], ['', 160],['', 220], ['', 400], ['', 560],['', 860],['',900]], columns=['SalesCode', 'Sales'])
fillrows = [0,3,5]
salescodes = ['XA','AC','BC']

# 补全区间结束边界,最后一个区间的结束为DataFrame总行数
fill_bounds = fillrows + [len(df)]

# 遍历每个区间赋值
for idx in range(len(salescodes)):
    start_row = fill_bounds[idx]
    end_row = fill_bounds[idx+1] - 1  # 到下一个起始行的前一行
    df.loc[start_row:end_row, 'SalesCode'] = salescodes[idx]

print(df)

方法2:向量化区间切割(代码更简洁,大表性能更好)

利用pd.cut直接对行索引做区间划分,绑定对应的销售编码即可:

import pandas as pd

df = pd.DataFrame([['', 120], ['', 300], ['', 160],['', 220], ['', 400], ['', 560],['', 860],['',900]], columns=['SalesCode', 'Sales'])
fillrows = [0,3,5]
salescodes = ['XA','AC','BC']

# 按行索引分区间,左闭右开匹配需求
df['SalesCode'] = pd.cut(
    df.index,
    bins = fillrows + [len(df)],
    labels = salescodes,
    right = False  # 设为False才会匹配[起始行, 下一起始行)的区间规则
)

print(df)

两种方法运行后都会得到你要求的输出结果:

SalesCode  Sales
0        XA    120
1        XA    300
2        XA    160
3        AC    220
4        AC    400
5        BC    560
6        BC    860
7        BC    900

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 15:15:03