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

按出现顺序对Pandas DataFrame中同线路同站点的Value列求和

解决方法

要实现相同Line下连续相同Stop的Value求和,核心是先识别连续的同站点组,再分组求和,具体操作:

  • 生成连续分组标识
    通过对比当前行与上一行的Line和Stop是否一致,标记新组的起始位置,再累加得到每个连续组的唯一ID:

    # 标记新组:当Line或Stop与上一行不同时,记为True
    new_group = (df['Line'] != df['Line'].shift()) | (df['Stop'] != df['Stop'].shift())
    # 累加生成分组ID
    df['group_id'] = new_group.cumsum()
    
  • 按分组求和
    用groupby按Line、Stop和group_id分组,对Value求和并保留原始顺序:

    result = df.groupby(['Line', 'Stop', 'group_id'], as_index=False)['Value'].sum()
    # 移除不需要的group_id列
    result = result.drop(columns='group_id')
    
  • 最终结果
    运行后得到符合需求的结果:

    Line Stop  Value
    0   A1    A     12
    1   A1    B      4
    2   A1    A      1
    3   B1    A     11
    4   B1    B      2
    5   B1    A      3
    
原方法问题说明

pivot_table是基于Line和Stop的唯一组合做全局聚合,会把所有同Line同Stop的Value全部相加(比如A1线的Stop A会合并成12+1=13),无法区分连续出现的站点组,因此不符合需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 10:32:25