2015-10-27 13 views
11

Ich habe eine Funktion erstellen, die Datenrahmen in Stücke der benötigten Größe zur Verfügung gestellt spaltete würde. Zum Beispiel, wenn Datenrahmen 1111 Zeilen enthält, mag ich in der Lage sein Chunkgröße von 400 Zeilen zu spezifizieren, und erhält drei kleinere Datenrahmen mit Größen von 400, 400 und 311. Gibt es eine Komfortfunktion die Arbeit zu tun? Was wäre der beste Weg zum Speichern und Iterieren über geschnittene Datenrahmen?Split Datenrahmen in relativ gleichmäßigen Stücke zu Länge nach

Beispiel Datenrahmen

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

Sie können nur den Index erhalten Bereiche mit 'test.index [:: 400]' und verwenden diese die df zu schneiden: 'first = test.iloc [400] second = test.iloc [400: 800] dritte = test.iloc [800] ' – EdChum

+0

Ich habe mehr als 50 Dateien mit> 50k Zeilen, ich denke, ich muss zusätzliche Index in einer Schleife generieren und df.groupby() verwenden – YKY

+1

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

Antwort

31

können Sie .groupby wie unten verwenden.

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

Ich habe bereits eine Funktion geschrieben, die genau das gleiche gemacht hat. Aber es ist groß und hässlich. Dies ist eine brillante und elegante Lösung. Vielen Dank. – YKY

+0

das ist süß. danke – roopalgarg

+0

visionär .... cool –

Verwandte Themen