Pandas Python DataFrames:如何拆分数据帧

时间:2014-11-06 18:15:48

标签: 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  -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],因为它很难根据所需的子数据帧数来计算开始和结束。

1 个答案:

答案 0 :(得分:1)

尝试以下方法。如果连接将返回相关的原始数据帧,它应返回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) ]