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

Pandas如何基于列X与分桶参数高效生成符合累加规则的新列

Pandas 按阈值逐行拆分分桶的高效实现

实现逻辑

核心采用pandas向量化截断运算,完全避免Python层面的逐行循环,支持任意数量的分桶列扩展,运行效率极高。

代码实现

首先导入依赖、构造示例数据:

import pandas as pd

# 示例数据
data = {'X':[0,0,10,10,10,15,20,50,50,55,80,100,1500]}
df = pd.DataFrame(data)

# 分桶配置,后续新增分桶只需要修改这个列表即可,不用调整逻辑
bucket_config = [
    ('A', 10),
    ('B', 50),
    ('C', 100),
    ('D', 300)
]

核心运算逻辑:

# 初始化剩余待分配值
remain = df['X'].copy()

for col_name, threshold in bucket_config:
    # 当前列取值为剩余值和阈值的较小值
    df[col_name] = remain.clip(upper=threshold)
    # 更新剩余待分配值
    remain -= df[col_name]

输出结果验证

运行后输出df即可得到和预期完全一致的结果:

IndexXABCD
000000
100000
21010000
31010000
41010000
51510500
620101000
750104000
850104000
955104500
10801050200
111001050400
1215001050100300

效率说明

所有运算均调用numpy底层实现,仅遍历分桶配置的列数(而非行数),就算是百万级行数、上百个分桶列的场景,也能在毫秒级完成运算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 09:09:01