我有一个时间序列数据框,我想通过试验和测量重新索引它。
简单来说,我有这个:
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 http://pandas.pydata.org/pandas-docs/dev/groupby.html#enumerate-group-items对于用法示例,他添加到了文档中。
如果您习惯从源代码安装 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)
以获得您想要的结果。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)