我有一个时间序列数据框,我想通过试验和测量重新索引它。
简化,我有这个:
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/