Python数据帧:如何分割数据帧

Python数据帧:如何分割数据帧,python,pandas,split,dataframe,Python,Pandas,Split,Dataframe,我有一个df df = pd.DataFrame(np.random.randn(11,3)) 0 1 2 0 0.102645 -1.530977 0.408735 1 1.081442 0.615082 -1.457931 2 1.852951 0.360998 0.178162 3 0.726028 2.072609 -1.167996 4 -0.454453 1.310887 -0.969910 5

我有一个df

df = pd.DataFrame(np.random.randn(11,3))

           0         1         2
0   0.102645 -1.530977  0.408735
1   1.081442  0.615082 -1.457931
2   1.852951  0.360998  0.178162
3   0.726028  2.072609 -1.167996
4  -0.454453  1.310887 -0.969910
5  -0.098552 -0.718283  0.372660
6   0.334170 -0.347934 -0.626079
7  -1.034541 -0.496949 -0.287830
8   1.870277  0.508380 -2.466063
9   1.464942 -0.020060 -0.684136
10 -1.057930  0.295145  0.161727
我如何将其拆分为给定数量的子部分,现在假设为2

像这样的

           0         1         2
0   0.102645 -1.530977  0.408735
1   1.081442  0.615082 -1.457931
2   1.852951  0.360998  0.178162
3   0.726028  2.072609 -1.167996
4  -0.454453  1.310887 -0.969910

           0         1         2
5  -0.098552 -0.718283  0.372660
6   0.334170 -0.347934 -0.626079
7  -1.034541 -0.496949 -0.287830
8   1.870277  0.508380 -2.466063
9   1.464942 -0.020060 -0.684136
10 -1.057930  0.295145  0.161727
理想情况下,我希望使用np.array_split(df,2),但它会抛出一个错误,因为它不是数组


是否有一个内置函数来执行此操作?我并不特别想使用df.loc[a:b],因为根据所需的给定子数据帧数很难计算开始和结束。它应该返回一个由n个子数据帧组成的数组,如果连接将返回有问题的原始数据帧

import math

def split(df, n):
    size = math.ceil(len(df) / n)
    return [ df[i:i + size] for i in range(0, len(df), size) ]

谢谢,但唯一的问题是剩下的。我的df的Split(df,2)返回3个子df。没有办法使用np.arry_split()自动处理余数。如果您使用的是Python2.x,请尝试将计算大小的行更改为
size=math.ceil(float(len(df))/n)
我不知道您做了什么,但它工作正常,我将运行更多的测试并让您知道结果,但谢谢!如果2个操作数是整数,Python 2.x,
/
将默认为整数除法。在Python3中,它将执行浮点除法,这是正确计算bucket大小所必需的。所以,这就是为什么显式地将数据帧长度转换为浮点数可以解决您的问题。