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()

以上给出了我想要的,一年中朱利安日的汇总统计信息,但我想重新排序该组,以便将后半部分(183 天)放在第一半部分的前面。使用普通的 numpy 数组:

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

但是我不能用 groupby 做到这一点,它会引发一个未实现的错误。

注意:这是来自google-groups的交叉帖子。我也一直在阅读 comp.lang.python,不幸的是人们倾向于忽略一些帖子,例如来自谷歌群组的帖子。

在此先感谢,
贝文

4

2 回答 2

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
于 2012-11-02T14:46:13.087 回答
0

我不知道为此有一个特定的 Pandas 函数,但你可以考虑 np.roll() 函数:

myindex = np.arange(1,367)
myindex = np.roll(myindex, int(len(myindex)/2.))
于 2012-11-02T07:15:40.027 回答