【发布时间】:2020-09-19 20:15:48
【问题描述】:
我已经阅读了这个网站上关于将 pandas 数据帧拆分为固定大小的块的几个主题,但是我遇到了一个我没有在这里看到的问题。所以这里是这个过程:我询问用户他希望有多少块的输入,然后询问每个块分配的数据帧的百分比,我验证给定的百分比不超过 1,然后进行相应的拆分.以下是最后一部分,我正在努力解决的问题:
def dataframe_splitting(df:pd.DataFrame, fracs:list):
split_frac = []
print('Size of the dataframe:', df.shape)
print('fracs:', fracs)
for i in fracs:
x = int(i*len(df))
split_frac.append(x)
print('split_frac:', split_frac)
chunks = np.array_split(df, split_frac)
for x in chunks:
print(x.shape)
return chunks
这是当参数为:5 个块和碎片 = [0.1, 0.1, 0.3, 0.2] 时给出的结果
Size of the dataframe: (2122905, 79)
fracs: [0.1, 0.1, 0.3, 0.2]
split_fracs: [212290, 212290, 636871, 424581]
(212290, 79)
(0, 79)
(424581, 79)
(0, 79)
(1698324, 79)
如您所见,对于相同的参数 (0.1),我有一个数据帧,其行数为 212290,其后的数据帧为空。我一开始尝试使用 np.split,结果没有什么不同。我真的不知道这段代码哪里错了,为什么会这样。
【问题讨论】: