Python 将一个数据帧平均分割为多个较小的数据帧
我有一个叫做df的框架,它有65个项目长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
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")