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)
Proof
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