繁体   English   中英

将 dataframe 均匀地拆分为许多较小的数据帧

[英]Splitting a dataframe into many smaller data frames evenly-ish

我有以下称为 df 的框架,它有 65 个项目长。

   Name  Data
0  Name1 Data1
1  Name2 Data2
2  Name3 Data3
....

我想尽可能均匀地将其拆分为 30 个数据帧。

所以长度为 65,我希望有 5 个长度为 3 的帧和 25 个长度为 2 的帧(加起来为 65)

我使用以下 function:

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 的文件。

有人对我如何实现我想要的有任何想法吗?

从它说的文档中使用np.array_split

对于一个长度为l的数组,应该分成 n 个部分,它返回大小为l//n + 1l % n个子数组和大小为 l//n 的 rest l//n.

for counter, df_chunk in enumerate(np.array_split(df, 30), 1):
    df_chunk.to_csv(f"path/to/file{counter}.csv")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM