Ich habe ein Excel-Dokument, das so aussieht.
cluster load_date budget actual fixed_price
A 1/1/2014 1000 4000 Y
A 2/1/2014 12000 10000 Y
A 3/1/2014 36000 2000 Y
B 4/1/2014 15000 10000 N
B 4/1/2014 12000 11500 N
B 4/1/2014 90000 11000 N
C 7/1/2014 22000 18000 N
C 8/1/2014 30000 28960 N
C 9/1/2014 53000 51200 N
Ich möchte in der Lage sein, den Inhalt von Spalte 1 - Cluster als Liste zurückzugeben, damit ich eine for-Schleife darüber ausführen und für jeden Cluster ein Excel-Arbeitsblatt erstellen kann.
Ist es auch möglich, den Inhalt einer ganzen Zeile in eine Liste zurückzugeben? z.B
list = [], list[column1] or list[df.ix(row1)]
.tolist()
, um sie in eine Python-Liste umzuwandeln.values
NO LONGER die bevorzugte Methode für den Zugriff auf zugrunde liegende Numpy-Arrays. Siehe diese Antwort .df.to_numpy().tolist()
sollte für die meisten Anwendungsfälle in Ordnung sein.list(x)
Antworten:
Pandas DataFrame-Spalten sind Pandas-Serien, wenn Sie sie herausziehen. Sie können sie dann aufrufen
x.tolist()
, um sie in eine Python-Liste umzuwandeln . Alternativ wirfst du es mitlist(x)
.Ausgabe:
quelle
Dies gibt ein numpy Array zurück:
Dies gibt ein numpy-Array eindeutiger Werte zurück:
Sie können auch numpy verwenden, um die eindeutigen Werte abzurufen, obwohl es Unterschiede zwischen den beiden Methoden gibt:
quelle
Beispielkonvertierung:
Numpy Array -> Panda-Datenrahmen -> Liste aus einer Panda-Spalte
Numpy Array
Konvertieren Sie das Numpy-Array in einen Panda-Datenrahmen
Konvertiere einen Panda-Frame in eine Liste
pdToList = list(dataPd['2'])
quelle
df = pd.DataFrame(data=[[10, 20, 30], [20, 30, 60], [30, 60, 90]])
einfacher? Beachten Sie auch den Variablennamen und das Leerzeichen, die den Python-Konventionen entsprechen. Als Beweis über die Liste iterieren Was beweist das genau? Dass es eine Liste ist?Da diese Frage viel Aufmerksamkeit auf sich gezogen hat und es verschiedene Möglichkeiten gibt, Ihre Aufgabe zu erfüllen, möchte ich einige Optionen vorstellen.
Das sind übrigens alles Einzeiler;)
Beginnen mit:
Übersicht über mögliche Operationen:
Code:
Wie in cs95 hervorgehoben , sollten andere Methoden gegenüber dem Pandas-
.values
Attribut aus der Pandas-Version 0.24 bevorzugt werden ( siehe hier) . Ich benutze es hier, weil die meisten Leute (bis 2019) noch eine ältere Version haben werden, die die neuen Empfehlungen nicht unterstützt. Sie können Ihre Version mit überprüfenprint(pd.__version__)
quelle
Wenn Ihre Spalte nur einen Wert hat, wird so etwas wie
pd.series.tolist()
ein Fehler erzeugt. Verwenden Sie den folgenden Code, um sicherzustellen, dass es in allen Fällen funktioniert:quelle
Angenommen, der Name des Datenrahmens nach dem Lesen der Excel-Tabelle lautet
df
: Nehmen Sie eine leere Liste (z. B.dataList
), durchlaufen Sie den Datenrahmen zeilenweise und fügen Sie ihn wie folgt an Ihre leere Liste an.Oder,
Nein, wenn Sie die drucken
dataList
, erhalten Sie jede Zeile als Liste in derdataList
.quelle
lower_case_with_underscores
Stil folgen . Welchen Vorteil hat diese Lösung genau gegenüber den bestehenden? Außerdem rate ich dringend von der Verwendung des Attributzugriffs auf Serien und DataFrames ab.quelle