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

如何提取Pandas多级索引DataFrame中每个id组的首行数据?

多级索引DataFrame提取分组首行的解决方案

针对你给出的多级索引DataFrame,要提取每个id分组的第一行数据,以下是几种可行的方法:

方法1:按第一级索引分组取首行(最稳妥)

如果不确定每个id下的第一行对应的id2值,直接通过groupby按id分组后取每组首行:

import pandas as pd
new_df = df.groupby(level='id').first()

执行后会得到每个id对应的首行数据,结果索引为id,保留原数据列。如果需要保留原多级索引结构,可改用:

new_df = df.groupby(level='id').nth(0)

方法2:直接通过多级索引定位(适用于首行id2固定为1的场景)

你的数据中每个id的首行id2都是1,可直接用loc按层级匹配:

new_df = df.loc[(slice(None), 1), :]

这里slice(None)表示匹配第一级索引的所有值,第二级索引指定为1,精准提取目标行。

方法3:用xs方法提取

通过xs(cross-section)方法指定多级索引的取值:

# 获取所有唯一的id值
unique_ids = df.index.get_level_values('id').unique()
# 遍历提取并合并
new_df = pd.concat([df.xs((id_val, 1), level=['id', 'id2']) for id_val in unique_ids], axis=1).T

内容的提问来源于stack exchange,提问作者Feng Hu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 18:40:49