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

如何按重复序列切片DataFrame并提取每组序列的最后一个元素?

解决方案

首先构造示例DataFrame:

import pandas as pd
df = pd.DataFrame({'a': [1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,3,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,3]})

步骤1:标记连续重复值的分组

通过判断当前值与前一行是否不同,生成连续重复块的分组ID:

df['group_id'] = df['a'].ne(df['a'].shift()).cumsum()

步骤2:提取每个连续块的最后一个元素

按分组ID聚合,取每组的最后一行,再提取目标列的结果:

result = df.groupby('group_id').last()['a'].tolist()

执行后result的值为[1, 2, 3, 1, 2, 3],完全匹配你的需求。

为什么drop_duplicates不适用?

drop_duplicates(subset="a", keep="last")是全局去重,会把所有重复的1、2、3只保留最后一次出现的,所以你只会得到[1,2,3]。而我们需要的是按连续重复块去重,保留每个连续块的最后一个元素,所以必须先标记分组再聚合。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 04:50:24