2017-08-24 20 views
1

我有一个熊猫系列是MultiIndexed,看起来是这样的:更换pd.MultiIndex级别2计数器

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级的每个子索引,我想用计数器替换它,但首先我要将子索引与该位置处的实际值合并。有没有一种简单的方法可以在熊猫中做到这一点?

谢谢。

回答

7
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) 
+0

IDK为什么,我只是没有能够得到一个元组,当我试图'申请(元组)'。我认为这是我的熊猫版本。 –

+0

Brb撤销一些downvotes,只为你。 :p –

+1

有趣的是,当天还剩7个小时,你已经没有法力了。你的投票是多产的。 – piRSquared