2017-07-25 1 views
4

私は以下のようなデータフレームを持っています。私はsize = 30でウィンドウを抽出し、データブロックごとにループを作成して他の関数を呼び出します。データフレーム列をパンダの等しいウィンドウに分割する

index = pd.date_range(start='2016-01-01', end='2016-04-01', freq='D') 
data = pd.DataFrame(np.random.rand(len(index)), index = index, columns=['random']) 

私は次の機能を見つけましたが、これを行うより効率的な方法があるのだろうかと思います。

def split(df, chunkSize = 30): 
    listOfDf = list() 
    numberChunks = len(df) // chunkSize + 1 
    for i in range(numberChunks): 
     listOfDf.append(df[i*chunkSize:(i+1)*chunkSize]) 
    return listOfDf 
+0

字下げを修正できますか? – jotasi

答えて

4

リストの理解を使用できます。アクセスdfsとデータフレームを分割する別の方法については、SO Postを参照してください。あなたがnumpyののarray_splitなどで効率的にそれを行うことができます

n = 200000 #chunk row size 
list_df = [df[i:i+n] for i in range(0,df.shape[0],n)] 
2

import numpy as np 

def split(df, chunkSize = 30): 
    numberChunks = len(df) // chunkSize + 1 
    return np.array_split(df, numberChunks, axis=0) 

それがnumpyの機能ですが、それは正しいインデックスと列に分割されたデータフレームを返します。

関連する問題