You need to enable JavaScript to run this app. 基于其他列值对指定列求和Part1:连续同类别行分组累计求和实现咨询
优惠活动
大模型
产品
解决方案
定价
更多

基于其他列值对指定列求和Part1:连续同类别行分组累计求和实现咨询

核心实现逻辑

首先识别V1列的连续同值区块(游程分组),按区块计算V2列的总和,再将总和仅赋值给对应区块的最后一行即可。以下提供两种主流数据分析工具的实现代码:


Python Pandas 实现

import pandas as pd

# 构造示例数据
df = pd.DataFrame({
    'V1': ['A','A','A','A','B','B','B','B','A','A','B','B','B'],
    'V2': [1,3,4,2,1,1,2,3,2,4,2,4,5]
})

# 生成连续同值区块的分组ID
df['group_id'] = (df['V1'] != df['V1'].shift()).cumsum()

# 初始化V3列为空
df['V3'] = ''
# 计算每个分组的V2总和
group_sum = df.groupby('group_id')['V2'].sum()
# 取每个分组的最后一行索引,填充总和
last_row_idx = df.groupby('group_id').tail(1).index
df.loc[last_row_idx, 'V3'] = group_sum.values

# 可选:删除辅助用的group_id列
df = df.drop('group_id', axis=1)

运行后df的输出结果与你给出的预期效果完全一致。


R 语言(dplyr)实现

library(dplyr)

# 构造示例数据
df <- tibble(
  V1 = c('A','A','A','A','B','B','B','B','A','A','B','B','B'),
  V2 = c(1,3,4,2,1,1,2,3,2,4,2,4,5)
)

# 数据处理
df <- df %>%
  # 生成连续同值区块的分组ID
  mutate(group_id = cumsum(V1 != lag(V1, default = first(V1)))) %>%
  group_by(group_id) %>%
  # 仅在分组最后一行填充求和结果,其余行留空
  mutate(V3 = ifelse(row_number() == n(), as.character(sum(V2)), "")) %>%
  ungroup() %>%
  # 删除辅助用的group_id列
  select(-group_id)

运行后即可得到目标结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 14:18:04