python - 重新索引 Pandas 数据框多索引的子级别

标签 python pandas dataframe multi-index

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

简化,我有这个:

                value
Trial         
    1     0        13
          1         3
          2         4
    2     3       NaN
          4        12
    3     5        34   

我想把它变成这样:

                  value
Trial    
    1      0        13
           1         3
           2         4
    2      0       NaN
           1        12
    3      0        34

我怎样才能最好地做到这一点?

最佳答案

就在昨天,杰出的安迪·海登 (Andy Hayden) 将此功能添加到 pandas 0.13 版本中,该版本随时都会发布。参见 here对于他添加到文档中的用法示例。

如果您愿意从源代码安装 pandas 的开发版本,您现在就可以使用它。

df['Measurements'] = df.reset_index().groupby('Trial').cumcount()

下面的代码是等价的,如果不那么简洁的话,并且可以在任何最新版本的 pandas 上运行。

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

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

关于python - 重新索引 Pandas 数据框多索引的子级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20104874/

相关文章:

python - 删除多索引和自动重命名列

python - 如何进行多个查询?

python - 输出中可见反斜杠

python - 使用 cython 从多个 pyx 文件生成可执行文件

python - Pandas 重新采样将周末推迟到周五

python - 向现有多索引数据框添加附加索引

python - BootstrapError 参数 "form"应包含有效的 Django 表单

python - 如何获取 Pandas 系列中某个值出现的比例?

python - 替换 Python DataFrame 列中的字符

python - 如何在 Python 中使用 panda 跳过读取空文件