Python 将一个数据帧平均分割为多个较小的数据帧

Python 将一个数据帧平均分割为多个较小的数据帧,python,pandas,split,chunking,Python,Pandas,Split,Chunking,我有一个叫做df的框架,它有65个项目长 Name Data 0 Name1 Data1 1 Name2 Data2 2 Name3 Data3 .... 我想把它尽可能平均地分成30个数据帧 如果长度为65,我希望有5帧的长度为3,25帧的长度为2(加起来就是65) 我使用以下功能: def chunk(seq, size): return (seq[pos:pos + size] for pos in range(0, len(seq), size)) n = 30

我有一个叫做df的框架,它有65个项目长

   Name  Data
0  Name1 Data1
1  Name2 Data2
2  Name3 Data3
....
我想把它尽可能平均地分成30个数据帧

如果长度为65,我希望有5帧的长度为3,25帧的长度为2(加起来就是65)

我使用以下功能:

def chunk(seq, size):
    return (seq[pos:pos + size] for pos in range(0, len(seq), size))

n = 30 #number of files

length = len(df)

counter=0

for df_chunk in chunk(frame, int(length / n) + (length % n > 0)):
    counter+=1
    df_chunk.to_csv(f"path/to/file{counter}.csv")
但是我只得到了21个文件,长度为3,1个文件长度为2,而不是5个文件长度为3,25个文件长度为2

有人对我如何实现我想要的东西有什么想法吗?

请使用文档中的内容:

对于长度为
l
且应拆分为n个部分的数组,它 返回大小为
l//n+1的
l%n
子数组和大小为
l//n的其余子数组。


对于df.groupby中的k,d(np.arange(len(df))//30):打印(k,d)
。我得到3帧,30、30和5帧长度抱歉,用
%30
替换
//30
。好了,现在可以了,有没有办法让k,d中的k从1开始?除了使用我自己的柜台
for counter, df_chunk in enumerate(np.array_split(df, 30), 1):
    df_chunk.to_csv(f"path/to/file{counter}.csv")