如何处理Pandas DataFrame,提取Step_ID列每个层级对应的最后一行
解决方案
Pandas有现成的内置方法可以直接实现需求,不需要额外写复杂逻辑,以下是两种常用的实现方式:
- 方法1:
groupby+tail(逻辑最直观,最推荐)
# 按Step_ID分组,取每个分组的最后1行 res = df1.groupby('Step_ID', as_index=False).tail(1)
tail(1)的参数代表取每个分组的最后N行,这里取1行刚好匹配需求,且会默认保留原始DataFrame的行顺序。
- 方法2:
drop_duplicates去重,指定保留最后一条
res = df1.drop_duplicates(subset='Step_ID', keep='last')
subset参数指定按Step_ID列判断重复值,keep='last'表示重复数据里只保留最后出现的那一条,最终效果和方法1完全一致。
两种方法运行后得到的结果都如下:
Step_ID value_01 2 Step1 2.2 4 Step2 0.0 8 Step3 5.2
小提示:如果你的原始数据没有按业务规则排序,建议先按你需要的排序逻辑对DataFrame排序后再执行上述操作,确保取到的是你预期的「最后一行」。
内容的提问来源于stack exchange,提问作者Parsyk
相关产品推荐
相关产品推荐

