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

Pandas双级索引DataFrame提取每个ID分组对应第二级索引最后一行

问题解决方案

核心逻辑:按双索引的第一级ID分组,取每个分组的最后一行即可,无需手动处理不同分组的长度差异。

前置操作(必做)

首先确保你的DataFrame索引是按ID升序、同ID下MONTH_ID升序排列的,保证最后一行是该ID对应的最大月份数据:

df = df.sort_index(level=["ID", "MONTH_ID"], ascending=[True, True])

可行实现方案

方案1:groupby + tail(1)(推荐,通用场景)

直接按第一级索引ID分组,调用tail(1)取每个分组的最后1行,自动适配不同分组的长度:

result = df.groupby(level="ID").tail(1)

方案2:groupby + last()(适用需过滤空值的场景)

如果分组内存在带空值的行,需要取最后一个所有字段都非空的行,可以使用该方法:

result = df.groupby(level="ID").last()

常见问题说明

你之前使用nth(-1)未达到预期,通常是因为分组时错误将ID和MONTH_ID都作为了分组键,导致每个分组仅包含1行数据,nth(-1)返回了全量数据。只需指定分组仅针对第一级ID索引即可解决该问题。

内容的提问来源于stack exchange,提问作者George Farah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 14:39:01