Python 熊猫按范围分组,允许重复

Python 熊猫按范围分组,允许重复,python,pandas,Python,Pandas,假设我有一个如下所示的数据帧: char | num ----------------- A | 1 B | 2 C | 3 D | 4 E | 5 有没有一种方法可以创建一个groupby对象,该对象将使用范围为3的“num”来创建如下组: char | num ----------------- A | 1 B | 2 C | 3 D | 4 E | 5 第一组: char |

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

char  |  num
-----------------
A     |  1
B     |  2
C     |  3
D     |  4
E     |  5
有没有一种方法可以创建一个groupby对象,该对象将使用范围为3的“num”来创建如下组:

char  |  num
-----------------
A     |  1
B     |  2
C     |  3
D     |  4
E     |  5
第一组:

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

行显然是重复的,但这是我想要的结果。我可以想出一些蛮力的方法来实现这一点,但我正在寻找一个优雅的解决方案,如果它存在的话。

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

不确定,但您所描述的内容看起来像是
pandas.DataFrame.rolling
。虽然我不知道你打算对这么难说的群体做什么。