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

Pandas如何按value列累计和阈值拆分DataFrame 求非迭代原生实现

Pandas 原生风格实现方案

可以用Pandas的向量化累加函数cumsum()结合布尔索引实现,无需逐行迭代,性能更优,实现逻辑如下:

核心实现代码

import pandas as pd

# 示例数据构造
df = pd.DataFrame({
    'name': ['1st', '2nd', '3rd', '4th'],
    'value': [1, 5, 3.5, 8]
})

threshold = 10
# 计算value列的顺序累加和
cumsum_val = df['value'].cumsum()
# 生成累加和是否达到阈值的布尔掩码
mask = cumsum_val >= threshold

if mask.any():
    # 找到第一个满足累加和>=阈值的行的整数位置
    split_idx = mask.argmax()
    # 拆分原表和新表
    df_original = df.iloc[:split_idx]
    df_new = df.iloc[split_idx:]
else:
    # 所有行累加和都未达到阈值,新表为空
    df_original = df.copy()
    df_new = pd.DataFrame(columns=df.columns)

结果验证

示例运行后:
df_original保留前3行,累加和为9.5<10:

namevalue
1st1
2nd5
3rd3.5

df_new为首次达到阈值开始的剩余行:

namevalue
4th8

方案优势

  • 完全基于Pandas向量化操作,避免逐行迭代,大数据量下性能远高于迭代方案
  • 兼容自定义索引场景,argmax()返回行的整数位置,不受索引标签影响
  • 自动处理边界情况:所有行累加和不足阈值时返回空的新表,不会报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:45:00