【发布时间】:2020-10-06 00:51:23
【问题描述】:
我有一个名为 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 的文件。
有人对我如何实现我想要的有任何想法吗?
【问题讨论】:
-
for k,d in df.groupby(np.arange(len(df))//30): print(k,d). -
我得到 3 帧,长度分别为 30、30 和 5
-
抱歉,请将
//30替换为%30。 -
好的,现在可以使用了,
-
有没有办法让 k,d 中的 k 从 1 开始?除了使用我自己的计数器
标签: python pandas split chunking