Skip to main content
 首页 » 编程设计

python之用计数器替换 pd.MultiIndex 级别 2

2025年05月04日13me-sa

我有一个多索引的 Pandas 系列,看起来像这样:

 index1   subindex   value 
--------------------------- 
 label1   a          2.0 
          b          4.1 
          c          2.3 
 label2   r1         6.2 
          s7         45.1 

我想把它变成下面这样:

 index1   subindex   value 
-------------------------------- 
 label1   0          ('a', 2.0) 
          1          ('b', 4.1) 
          2          ('c', 2.3) 
 label2   0          ('r1',6.2) 
          1          ('s7',45.1) 

所以对于第1级的每一个子索引,我想用一个计数器替换它,但首先我想将子索引与该位置的实际值合并。在 Pandas 中有一种简单的方法可以做到这一点吗?

谢谢。

请您参考如下方法:

df.reset_index('subindex').apply(tuple, 1).to_frame('value').set_index( 
    df.groupby('index1').cumcount().rename('subindex'), append=True) 
 
                      value 
index1 subindex             
label1 0           (a, 2.0) 
       1           (b, 4.1) 
       2           (c, 2.3) 
label2 0          (r1, 6.2) 
       1         (s7, 45.1)