
Sie können Reihen von pandas.DataFrame und Elemente von pandas.Series mit der Methode sample() zufällig mischen. Es gibt andere Möglichkeiten zum Mischen, aber die Verwendung der sample()-Methode ist praktisch, da es nicht erforderlich ist, andere Module zu importieren.
Dieser Artikel hat folgenden Inhalt.
- Geben Sie frac=1 an, damit sample() gemischt wird
- Index zurücksetzen:
ignore_index, reset_index()
- Ursprüngliches Objekt aktualisieren
Im Beispielcode WIRD sterben folgende CSV-Datei verwendet.
import pandas as pd
df = pd.read_csv('data/src/sample_pandas_normal.csv')
print(df)
# name age state point
# 0 Alice 24 NY 64
# 1 Bob 42 CA 92
# 2 Charlie 18 CA 70
# 3 Dave 68 TX 70
# 4 Ellen 24 CA 88
# 5 Frank 30 NY 57
Das Beispiel used pandas.DataFrame, aber SIE can pandas.Series auf sterben same Weise mischen.
Beachten Sie, dass Sie sort_values() und sort_index() verwenden können, um Zeilen nach Index- oder Spaltenwerten zu sortieren. Siehe folgenden Artikel.
Geben Sie frac=1 an, damit sample() gemischt wird
Notebooks zur Methode sample() finden Sie im following Artikel.
If der frac-Parameter auf 1 gesetzt IST, Werden alle Zeilen zufällig abgetastet, was dem Mischen der gesamten Zeile entspricht.
print(df.sample(frac=1))
# name age state point
# 2 Charlie 18 CA 70
# 1 Bob 42 CA 92
# 3 Dave 68 TX 70
# 0 Alice 24 NY 64
# 5 Frank 30 NY 57
# 4 Ellen 24 CA 88
Sie können den Zufallszahlengenerator mit einem festen Startwert mit dem Parameter random_state initialisieren. Nach der Initialisierung mit demselben Seed werden sie immer auf dieselbe Weise gemischt.
print(df.sample(frac=1, random_state=0))
# name age state point
# 5 Frank 30 NY 57
# 2 Charlie 18 CA 70
# 1 Bob 42 CA 92
# 3 Dave 68 TX 70
# 0 Alice 24 NY 64
# 4 Ellen 24 CA 88
print(df.sample(frac=1, random_state=0))
# name age state point
# 5 Frank 30 NY 57
# 2 Charlie 18 CA 70
# 1 Bob 42 CA 92
# 3 Dave 68 TX 70
# 0 Alice 24 NY 64
# 4 Ellen 24 CA 88
Index zurücksetzen:ignore_index, reset_index()
Wenn Sie das Ergebnis neu indizieren möchten (0, 1, … , n-1), setzen Sie den Parameter ignore_index auf True.
print(df.sample(frac=1, ignore_index=True))
# name age state point
# 0 Ellen 24 CA 88
# 1 Frank 30 NY 57
# 2 Bob 42 CA 92
# 3 Dave 68 TX 70
# 4 Alice 24 NY 64
# 5 Charlie 18 CA 70
Derignore_index wurde in Pandas 1.3.0 hinzugefügt. Für frühere Versionen können Sie die Methode reset_index() verwenden. Setzen Sie den Drop-Parameter auf True, um den ursprünglichen Index zu löschen.
print(df.sample(frac=1).reset_index(drop=True))
# name age state point
# 0 Bob 42 CA 92
# 1 Dave 68 TX 70
# 2 Alice 24 NY 64
# 3 Charlie 18 CA 70
# 4 Frank 30 NY 57
# 5 Ellen 24 CA 88
Ursprüngliches Objekt aktualisieren
Wenn SIE das ursprüngliche Objekt aktualisieren möchten, weisen SIE das gemischte Ergebnis dem ursprünglichen Objekt zu und überschreiben Sie es.
df = df.sample(frac=1)
print(df)
# name age state point
# 0 Alice 24 NY 64
# 5 Frank 30 NY 57
# 1 Bob 42 CA 92
# 4 Ellen 24 CA 88
# 3 Dave 68 TX 70
# 2 Charlie 18 CA 70