Ich habe den folgenden minimalen Code, der zu langsam ist. Für die 1000 Zeilen, die ich brauche, dauert es ca. 2 min. Ich brauche es schneller zu laufen.Python: schnelle Subsetting und Looping Datenrahmen
import numpy as np
import pandas as pd
df = pd.DataFrame(np.random.randint(0,1000,size=(1000, 4)), columns=list('ABCD'))
start_algorithm = time.time()
myunique = df['D'].unique()
for i in myunique:
itemp = df[df['D'] == i]
for j in myunique:
jtemp = df[df['D'] == j]
Ich weiß, dass numpy kann es viel schneller laufen, aber bedenken Sie, dass ich einen Teil des ursprünglichen Datenrahmens (oder Array in numpy) für bestimmte Werte der Spalte ‚D‘ halten wollen. Wie kann ich die Leistung verbessern?
immer versuchen, einen [Minimal, vollständige, und prüfbare Beispiel] (http://stackoverflow.com/help/mcve) wenn man Fragen stellt. Im Falle von _pandas_ Fragen geben Sie bitte Beispiel _input_ und _output_ data sets (5-7 Zeilen im CSV/dict/JSON/Python-Code-Format _als Text_, so könnte man es verwenden, wenn Sie eine Antwort für Sie kodieren). Dies wird dazu beitragen, _situations_ zu vermeiden: 'Ihr Code funktioniert nicht für mich' oder' er funktioniert nicht mit meinen Daten', etc. – MaxU
Es ist nicht klar, was Sie tun möchten ... – MaxU
ich nicht möchte eine einfache Schleife durch Zeilen von Datenrahmen. Sonst könnte ich es einfach in numpy implementieren. Ich brauche die Schleife durch eindeutige Werte von olumn 'D', die Teilmengen des ursprünglichen Datenrahmens erzeugen. Mit numpy sollte ich alle Elemente eines 2d-Arrays durchlaufen und die Zeilen mit demselben Wert in der Spalte 'D' speichern.Es gibt keine wirklichen Daten, an denen gearbeitet werden kann, und deshalb habe ich dem Datenrahmen zufällige Werte gegeben. – ilias