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

如何基于dataframe指定列条件从固定起始值生成递增新列

实现方案

核心逻辑是判断ix列相邻行的取值变化次数,叠加初始值得到目标列,可直接用pandas内置的偏移、比较、累计求和方法实现,代码如下:

import pandas as pd

# 构造示例数据,和你给出的输入一致
df = pd.DataFrame(
    data={'ix': ['pa', 'pa', 'pa', 'pe', 'fc', 'pb', 'pb', 'df']},
    index=range(1, 9)
)

# 核心逻辑,生成ans列
df['ans'] = 2348 + (df['ix'] != df['ix'].shift()).fillna(False).cumsum()

# 输出验证
print(df)

逻辑说明

  • df['ix'].shift() 会将ix列整体向下偏移1行,方便当前行和上一行的取值做对比
  • 比较运算符!=会返回布尔序列,当前行和上一行ix取值不同时返回True(对应数值1),相同时返回False(对应数值0)
  • 第一行因为没有上一行数据,偏移后为NaN,默认比较结果为True,用fillna(False)将其修正为False,保证第一个分组的增量为0
  • cumsum()对布尔序列做累计求和,得到截止当前行ix的累计变化次数
  • 加上初始值2348,最终得到符合要求的ans列

运行后输出结果和你给出的预期完全一致:

ix   ans
1  pa  2348
2  pa  2348
3  pa  2348
4  pe  2349
5  fc  2350
6  pb  2351
7  pb  2351
8  df  2352

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

相关产品推荐
方舟 Agent Plan

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

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