2012-11-02 113 views
4

我正在寻找一种干净的方式来重新排列组中的索引。
示例代码:重新索引或重新排序组

import numpy as np 
import pandas as pd 

mydates = pd.date_range('1/1/2012', periods=1000, freq='D') 
myts = pd.Series(np.random.randn(len(mydates)), index=mydates) 
grouped = myts.groupby(lambda x: x.timetuple()[7]) 
mymin = grouped.min() 
mymax = grouped.max() 

上面给我我想要的东西,在这一年的儒略日汇总统计信息,但后来我想重新排序组,以便最后半(185天),是摆在面前上半场。 与正常numpy的数组:

myindex = np.arange(1,367) 
myindex = np.concatenate((myindex[183:],myindex[:183])) 

但我不能用它提出了一个不执行错误GROUPBY做到这一点。

注意:这是一个来自google-groups的交叉帖子。另外,我一直在阅读comp.lang.python,不幸的是,人们往往会忽略一些帖子,例如来自谷歌组。

由于提前,
贝文

+0

是否要对mymin' /'mymax'重新排序或重新排序groupby对象中的每个数据子集?从标题看,它似乎是后者,但'np.concatenate'示例看起来像前者。 –

回答

6

为什么不干脆重新编制结果?

In [7]: mymin.reindex(myindex) 
Out[7]: 
184 -0.788140 
185 -2.206314 
186 0.284884 
187 -2.197727 
188 -0.714634 
189 -1.082745 
190 -0.789286 
191 -1.489837 
192 -1.278941 
193 -0.795507 
194 -0.661476 
195 0.582994 
196 -1.634310 
197 0.104332 
198 -0.602378 
... 
169 -1.150616 
170 -0.315325 
171 -2.233139 
172 -1.081528 
173 -1.316668 
174 -0.963783 
175 -0.215260 
176 -2.723446 
177 -0.493480 
178 -0.706771 
179 -2.082051 
180 -1.066649 
181 -1.455419 
182 -0.332383 
183 -1.277424 
+0

谢谢Wes,那正是我需要的。 – bevanj

0

林不知道该特定熊猫的功能,但你可以考虑np.roll()函数:

myindex = np.arange(1,367) 
myindex = np.roll(myindex, int(len(myindex)/2.))