Hallo Leute,
ich habe in meinem Notebook eine csv.Datei eingelesen und diese als DataFrame gespeichert. Der DataFrame enthält 14 Spalten mit Werten. Ich würde gerne die Werte der einzelnen Spalten untereinander in einer Liste anordnen, sodass bspw. Werte_Spalte 2 unter Werte_Spalte 1 dann Werte_Spalte 3 unter Werte_Spalte 1 usw. Wie lässt sich dies einigermaßen elegant lösen? Hätte da jmd. einen Ansatz für mich?
Cheers Luca
Pandas DataFrame transformieren
Hallo Luca,
Du kannst z.B. mit tolist() die Spaltenwerte in eine Liste umwandeln und diese Listen addieren:
Du kannst z.B. mit tolist() die Spaltenwerte in eine Liste umwandeln und diese Listen addieren:
Code: Alles auswählen
import pandas as pd
df = pd.DataFrame([["a", "b", "c"], ["d", "e", "f"], ["g", "h","i"]])
print(df)
all_values=[]
for column in df:
this_column_values = df[column].tolist()
all_values += this_column_values
one_column_df = pd.DataFrame(all_values)
print(one_column_df)
-
- User
- Beiträge: 491
- Registriert: Mittwoch 13. November 2019, 08:38
Man verwendet keine Schleifen, um über Elemente von Arrays oder DataFrames zu iterieren, sondern verwendet die entsprechenden Funktionen. Hier wird pandas.concat() gesucht.
Hallo einfachTobi,
auch dann musst Du aber über die Spalten iterieren, es ist also kein Unterschied.
Oder meintest Du etwas anderes?
Gruß,
gerr
auch dann musst Du aber über die Spalten iterieren, es ist also kein Unterschied.
Code: Alles auswählen
import pandas as pd
df = pd.DataFrame([["a", "b", "c"], ["d", "e", "f"], ["g", "h", "i"]])
print(df)
one_column_df = pd.concat([df.loc[:, i] for i in df.columns], ignore_index=True)
print(one_column_df)
Gruß,
gerr
Dann ist Dir die Eigenschaft als DataFrame eigentlich egal, und Du kannst mit Matrizen arbeiten
Code: Alles auswählen
import pandas as pd
df = pd.DataFrame([["a", "b", "c"], ["d", "e", "f"], ["g", "h", "i"]])
data = df.as_matrix().ravel()
Stimmt. Ich war davon ausgegangen dass wieder ein DataFrame zurückgegeben werden soll.
as_matrix ist aber deprecated, besser to_numpy verwenden:
as_matrix ist aber deprecated, besser to_numpy verwenden:
Code: Alles auswählen
import pandas as pd
df = pd.DataFrame([["a", "b", "c"], ["d", "e", "f"], ["g", "h", "i"]])
data = df.to_numpy().ravel()
print(data)
Sirius3 hat geschrieben: ↑Mittwoch 26. Januar 2022, 10:47 Dann ist Dir die Eigenschaft als DataFrame eigentlich egal, und Du kannst mit Matrizen arbeitenCode: Alles auswählen
import pandas as pd df = pd.DataFrame([["a", "b", "c"], ["d", "e", "f"], ["g", "h", "i"]]) data = df.as_matrix().ravel()
-
- User
- Beiträge: 491
- Registriert: Mittwoch 13. November 2019, 08:38
Oh, ich dachte, dass es um mehrere DataFrames ginge - sorry, nur überflogen. Die Iteration soll natürlich entfallen.
Dann sollte man eher DataFrame.melt() verwenden.