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

基于col1列值出现次数为value列累加指定常量的实现需求

Pandas实现按分组累加指定常量

初始数据

给定初始DataFrame:

import pandas as pd

df = pd.DataFrame({'col1':['x','x','x','x','x','y','y','y','y','y','y','y'],
                   'value':[0,0,0,0,0,0,0,0,0,0,0,0]})

需求说明

需要对value列进行累加更新:

  • 每出现一次x,value从0开始累加100
  • 每出现一次y,value从x分组的最终累加值继续累加150
    最终实现逐行递增的累计结果。

解决方案

方法一:替换映射后直接累计求和

这是最简洁的实现方式,先将col1的取值替换为对应常量,再计算累计和:

# 定义取值与常量的映射关系
const_map = {'x': 100, 'y': 150}
# 替换后计算累计和
df['value'] = df['col1'].map(const_map).cumsum()

方法二:分组序号计算后累加

如果需要更清晰地展示分组内的计数逻辑,可以用groupby.cumcount获取分组内的行号,再计算对应值后累计:

const_map = {'x': 100, 'y': 150}
# 先获取每个分组内的行索引(从0开始),加1后乘以对应常量,再累计求和
df['value'] = (df.groupby('col1').cumcount() + 1) * df['col1'].map(const_map)
df['value'] = df['value'].cumsum()

最终效果

执行上述代码后,value列的结果为:
[100, 200, 300, 400, 500, 650, 800, 950, 1100, 1250, 1400, 1550],完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 05:50:26