Pandas groupby范围,允许重复

时间:2017-02-28 04:00:23

标签: python pandas

假设我有一个如下所示的数据框:

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

行显然会重复,但这是我想要的结果。我可以想到一些蛮力的方法来实现这一点,但如果它在那里,我会钓到一个优雅的解决方案。

1 个答案:

答案 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