如何在Pandas列中获取下一个不同值?求实现代码
实现需求的Python代码
可以通过Pandas的分组和映射功能完成该需求,步骤如下:
- 为连续相同的
col1值生成唯一组ID,区分不同的连续值块; - 构建每个组ID与下一个组的
col1值的映射关系; - 将映射关系应用到原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
相关产品推荐
相关产品推荐

