2015-10-27 13 views
11

提供されたデータフレームを必要なサイズのチャンクに分割する機能を作成する必要があります。たとえば、dataframeに1111行が含まれている場合、400行のチャンクサイズを指定し、サイズが400,400,311の3つの小さいデータフレームを取得できるようにしたいと思います。ジョブを実行する便利な機能はありますか?スライスされたデータフレームを格納して反復する最善の方法は何でしょうか?あなたは以下のように.groupby使用することができますデータフレームを長さに応じて比較的偶数のチャンクに分割する

例DATAFRAME

import numpy as np 
import pandas as pd 

test = pd.concat([pd.Series(np.random.rand(1111)), pd.Series(np.random.rand(1111))], axis = 1) 
+0

あなただけのインデックスは 'test.index [:: 400]'使用の範囲を取得し、DFスライスするためにこれを使用することができます:[秒= test.iloc 400:最初の '= test.ilocの[400]: 800] 3番目= test.iloc [800] ' – EdChum

+0

50kを超える50個のファイルを持っているので、ループ内にインデックスを追加してdf.groupby()を使用する必要があると思います – YKY

+1

[' sklearn train_test_split'](http://scikit-learn.org/stable/modules/generated/sklearn.cross_validation.train_test_split.html) – EdChum

答えて

31

for g, df in test.groupby(np.arange(len(test)) // 400): 
    print(df.shape) 
# (400, 2) 
# (400, 2) 
# (311, 2) 
+1

私はすでにまったく同じことをした関数を書いています。しかし、それは大きくて醜いです。これは華麗でエレガントなソリューションです。ありがとう。 – YKY

+0

これは甘いです。ありがとうございます – roopalgarg

+0

visionary ....クール –

関連する問題