将pandas数据框分成n个等份 + 1。

6
我有一个包含44150行的pandas数据框。
我想将其分成若干个子数据框,每个子数据框包含100行,除了最后一个子数据框只包含50行。
我尝试使用numpy.array_split来拆分,但结果是分成了392个大小为100的数据框和50个大小为99的数据框。
请问是否有其他办法可以按照我想要的方式拆分?

当你给array_split一个数字时,它将把DataFrame分成尽可能相等的部分。你也可以提供一个索引列表来进行分割,例如使用@Abramodj的解决方案[S*x for x in range(1, N+1)] - ALollz
另外,在“分块”方面,还可以参考许多关于pandas的答案。(顺便说一下,如果您想在读取时进行此操作,可以按100行为一组进行读取。) - smci
1个回答

7
你可以使用 iloc 和列表推导式:
df = pd.DataFrame({
    'x':np.random.randn(44150),
    'y':np.random.randn(44150),
})

S = 100
N = int(len(df)/S)
frames = [ df.iloc[i*S:(i+1)*S].copy() for i in range(N+1) ]

最后一个DataFrame可以在frames[-1]中找到,而其他的DataFrame有100行。

1
你为什么使用了 copy() - Salih

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接