Если это не массивный файл (8 492 кажется разумным), тогда вы можете прочитать весь лот, а затем создать ключ группировки и уменьшить последний ключ, если он встречается менее чем в N раз, например:
import numpy as np
import pandas as pd
N = 1000
df = pd.read_csv('C:/Users/lap/Desktop/bone/Z1.csv')
g = df.index // N
g = np.where((g == g[-1]) & ((g == g[g-1]).sum() < N), g[-1] -1, g)
for _, dataset in df.groupby(g):
# ... do your things with dataset and functionX here...
С pd.Series(list('abcde'))
, тогда N == 2 дает вам группы [a, b] и [c, d, e], а с N == 3 вы получаете одну группу [a, b, * +1007 *, д, е]