Seite 1 von 1

Pandas DataFrame transformieren

Verfasst: Freitag 21. Januar 2022, 22:11
von LuWe2022
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

Re: Pandas DataFrame transformieren

Verfasst: Dienstag 25. Januar 2022, 19:24
von gerr
Hallo Luca,

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)

Re: Pandas DataFrame transformieren

Verfasst: Dienstag 25. Januar 2022, 21:59
von einfachTobi
Man verwendet keine Schleifen, um über Elemente von Arrays oder DataFrames zu iterieren, sondern verwendet die entsprechenden Funktionen. Hier wird pandas.concat() gesucht.

Re: Pandas DataFrame transformieren

Verfasst: Mittwoch 26. Januar 2022, 09:03
von gerr
Hallo einfachTobi,

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)
Oder meintest Du etwas anderes?

Gruß,
gerr

Re: Pandas DataFrame transformieren

Verfasst: Mittwoch 26. Januar 2022, 10:47
von Sirius3
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()

Re: Pandas DataFrame transformieren

Verfasst: Mittwoch 26. Januar 2022, 11:59
von gerr
Stimmt. Ich war davon ausgegangen dass wieder ein DataFrame zurückgegeben werden soll.
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 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()

Re: Pandas DataFrame transformieren

Verfasst: Mittwoch 26. Januar 2022, 12:46
von einfachTobi
gerr hat geschrieben: Mittwoch 26. Januar 2022, 09:03 Hallo einfachTobi,

auch dann musst Du aber über die Spalten iterieren, es ist also kein Unterschied.
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.