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)
我该怎么做才能做到最好?
就在昨天,着名的安迪·海登(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)
获得您想要的结果.