IIUC вы можете использовать np.array_split
для достижения этой цели:
In[24]:
df = pd.DataFrame(np.random.randn(10,3), columns=list('abc'))
for chunk in np.array_split(df,(len(df.index)+2)/3):
print(chunk)
a b c
0 0.013657 0.075587 0.422208
1 0.380518 -1.941691 2.465324
2 -0.530724 -0.074501 -0.527502
a b c
3 0.959920 0.282187 1.277451
4 -0.013171 1.610865 0.492687
5 0.353947 -1.406726 -0.402013
a b c
6 -0.462242 1.267895 -0.477148
7 -0.735699 -0.567091 -1.212561
a b c
8 -1.416133 0.355858 -0.053821
9 -0.942774 -0.331276 -0.234650
Так что array_split
разделит df на разбиения неравного размера, если он не может разделить одинаково, поэтомуЯ передаю длину индекса и, чтобы округлить, добавляю 2, чтобы получился 4-й блок, если я этого не сделал:
In[25]:
for chunk in np.array_split(df,len(df.index)/3):
print(chunk)
a b c
0 0.013657 0.075587 0.422208
1 0.380518 -1.941691 2.465324
2 -0.530724 -0.074501 -0.527502
3 0.959920 0.282187 1.277451
a b c
4 -0.013171 1.610865 0.492687
5 0.353947 -1.406726 -0.402013
6 -0.462242 1.267895 -0.477148
a b c
7 -0.735699 -0.567091 -1.212561
8 -1.416133 0.355858 -0.053821
9 -0.942774 -0.331276 -0.234650
Попытка просто создать фрагменты размера 3как деление было округлено вниз.