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

如何在Pandas列中获取下一个不同值?求实现代码

实现需求的Python代码

可以通过Pandas的分组和映射功能完成该需求,步骤如下:

  1. 为连续相同的col1值生成唯一组ID,区分不同的连续值块;
  2. 构建每个组ID与下一个组的col1值的映射关系;
  3. 将映射关系应用到原DataFrame,生成col2列。

完整代码:

import pandas as pd

# 创建原始DataFrame
ds = {"col1":[1,1,1,1,2,3,4,4,4,4,4,5,4,4,5,6]}
df = pd.DataFrame(data=ds)

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

# 构建组到下一个组值的映射
group_next_val = df.groupby('group_id')['col1'].first().shift(-1).to_dict()

# 生成col2列
df['col2'] = df['group_id'].map(group_next_val)

# 移除临时组ID列(可选)
df.drop('group_id', axis=1, inplace=True)

# 输出结果
print(df)

运行后得到的结果:

col1  col2
0      1   2.0
1      1   2.0
2      1   2.0
3      1   2.0
4      2   3.0
5      3   4.0
6      4   5.0
7      4   5.0
8      4   5.0
9      4   5.0
10     4   5.0
11     5   4.0
12     4   5.0
13     4   5.0
14     5   6.0
15     6   NaN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 15:57:42