大熊猫数据帧多索引的重新索引

The*_*era 6 python multi-index dataframe pandas

我有一个时间序列数据框,我想通过试验和测量重新索引它.

简化,我有这个:

                value
Trial         
    1     0        13
          1         3
          2         4
    2     3       NaN
          4        12
    3     5        34   
Run Code Online (Sandbox Code Playgroud)

我想转变成这个:

                  value
Trial    
    1      0        13
           1         3
           2         4
    2      0       NaN
           1        12
    3      0        34
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能做到最好?

Dan*_*lan 7

就在昨天,着名的安迪·海登(Andy Hayden)将此功能添加到0.13版的大熊猫中,这些大熊猫将于任何一天发布.请参阅此处以了解他添加到文档中的用法示例.

如果您习惯从源代码安装pandas的开发版本,则可以立即使用它.

df['Measurements'] = df.reset_index().groupby('Trial').cumcount()
Run Code Online (Sandbox Code Playgroud)

如果不那么简洁,以下代码是等效的,并且适用于任何最新版本的pandas.

grouped = df.reset_index().groupby('Trial')
df['Measurements'] = grouped.apply(lambda x: Series(np.arange(len(x)), x.index))
Run Code Online (Sandbox Code Playgroud)

最后,df.set_index(['Trial', 'Measurements'], inplace=True)获得您想要的结果.

  • 哈哈!"赫赫有名"+1;)(注意:cumcount也适用于索引中的dupes,但"等效"不会......我在文档中有点厚颜无耻并且说"*基本上*等价":p) (4认同)