2017-02-01 3 views
0

Ich habe eine Reihe von sequentiellen Daten, und ich möchte mit dem Austausch, zufällige Sequenzen von Elementen (z. B. 50 Tage zu einer Zeit).Sampling-Sequenzen in Pandas

Wenn ich etwas wie df.sample(50,replace=True) mache, zieht es nur 50 zufällige Reihen aus einem Hut.

Ich habe Code geschrieben, der den Trick tut, aber es ist nicht nett. Gibt es einen Standard Weg, dies in Pandas zu tun?

+1

'Ich habe Code geschrieben, der den Trick macht, aber es ist nicht nett. - Sie können uns eine vereinfachte - nicht so nette Implementierung Ihres Codes zeigen. – cel

Antwort

0

Würde so etwas funktionieren?

df.loc[np.random.choice(df.where((df.date >= 1/1/16) & (df.date <= 3/15/16)) , 50, replace=True)] 
1

Unter der Annahme, python2.7, indiziert Ihre Datenrahmen zu Terminen, zu sortieren und dann können Sie Zeilen auswählen sehr schön, wie so:

my_df.iloc(xrange(10, 60)) 

Offensichtlich sorgen für das zweite Argument xrange < my_df.shape[0]. Es ist einfach, den ausgewählten Bereich zu randomisieren.