我有一个时间序列数据框,我想通过试验和测量重新索引它。
简化,我有这个:
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
我怎样才能做到最好?
答案 0 :(得分:7)
就在昨天,杰出的Andy Hayden将此功能添加到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)
获得您想要的结果。