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

如何在指定层级截断Pandas MultiIndex,保留每个实例前n个时间点

Pandas MultiIndex按实例保留前n个时间点的截断方法

先看原始的MultiIndex数据:

var_0  var_1
instances timepoints              
0         1               1      4
          2               2      5
          3               3      6
          4               5      8
1         1               1      4
          2               2     55
          3               3      6
          4               3      6
2         1               1     42
          2               2      5
          3               3      6

需求很明确:给每个instances(实例)只保留前n个timepoints(时间点),比如n=2时,预期结果是:

var_0  var_1
instances timepoints              
0         1               1      4
          2               2      5
1         1               1      4
          2               2     55
2         1               1     42
          2               2      5

有两种简单的方法可以实现:

方法1:用groupby+head(最简洁)

直接按instances分组,取每组的前n行就行:

n = 2
result = df.groupby(level='instances').head(n)

方法2:用cumcount做布尔索引

如果需要更灵活的筛选逻辑,可以先给每个组内的行标记序号,再筛选序号小于n的行:

n = 2
# 给每个instances下的行从0开始计数
group_seq = df.groupby(level='instances').cumcount()
# 只保留计数小于n的行
result = df[group_seq < n]

两种方法都能得到你要的结果,第一种写法更短,日常用起来更顺手。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 18:10:48