假设我有一个如下所示的数据框:
char | num
-----------------
A | 1
B | 2
C | 3
D | 4
E | 5
是否有办法制作一个groupby对象,该对象将使用一个范围为3的数字' num'创建这样的组:
第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
行显然会重复,但这是我想要的结果。我可以想到一些蛮力的方法来实现这一点,但如果它在那里,我会钓到一个优雅的解决方案。
答案 0 :(得分: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