2014-11-06 83 views
0

我有一個DF大熊貓的Python DataFrames:如何分割dataframes

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

請嘗試以下操作。它應該返回一個由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) ] 
+0

感謝這一點,但唯一的問題是餘下的問題。拆分(df,2)爲我的df返回3個子dfs。有沒有辦法使用np.arry_split()一些如何自動處理剩餘。 – 2014-11-06 18:35:45

+0

如果你使用的是Python 2.x,嘗試改變這一行來計算大小size = math.ceil(float(len(df))/ n)' – mtadd 2014-11-06 18:38:50

+0

我不知道你做了什麼,但它的工作很好,我會運行一些測試,並讓你知道它,但謝謝! – 2014-11-06 18:41:38