groupby
你可以用
制作一个完美的“连续”数组
np.arange(10)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
如果我从单调递增的索引中减去它,只有那些“连续”的索引成员才会显示为相等的。这是建立分组依据的一种巧妙方法。
list_of_df = [d for _, d in df.groupby(df.index - np.arange(len(df)))]
并打印每一个来证明这一点
print(*list_of_df, sep='\n\n')
Column1 Column2
Index
4464 10.5 12.7
4465 11.3 12.8
4466 10.3 22.8
Column1 Column2
Index
5123 11.3 21.8
5124 10.6 22.4
Column1 Column2
Index
5323 18.6 23.5
np.split
您可以使用np.flatnonzero 来识别差异不等于1 并避免使用cumsum 和groupby
list_of_df = np.split(df, np.flatnonzero(np.diff(df.index) != 1) + 1)
证明
print(*list_of_df, sep='\n\n')
Column1 Column2
Index
4464 10.5 12.7
4465 11.3 12.8
4466 10.3 22.8
Column1 Column2
Index
5123 11.3 21.8
5124 10.6 22.4
Column1 Column2
Index
5323 18.6 23.5