2017-02-28 101 views
1

說我有一個數據幀,看起來像這樣:熊貓GROUPBY範圍,允許重複

char | num 
----------------- 
A  | 1 
B  | 2 
C  | 3 
D  | 4 
E  | 5 

有沒有一種方法,使將使用一系列的GROUPBY對象說3「民」創建羣組像這樣:

組1:

char | num 
----------------- 
A  | 1 
B  | 2 
C  | 3 

組2:

char | num 
----------------- 
B  | 2 
C  | 3 
D  | 4 

第3組:

char | num 
----------------- 
C  | 3 
D  | 4 
E  | 5 

行顯然會被複制,但是這是我要的結果。我可以想出一些蠻力的方法來實現這一點,但如果它在外面,我正在尋找一個優雅的解決方案。

+2

不知道,但你描述看起來像什麼'pandas.DataFrame.rolling'將是一件好事。儘管我不知道你打算如何處理這些難以說服的團體。 –

回答

2

pd.concat弄虛作假

n = len(df) - 2 
g = pd.concat([df.iloc[i: i + 3] for i in range(n)]).groupby(np.arange(n).repeat(3)) 

g.get_group(0) 

    char num 
0 A 1 
1 B 2 
2 C 3