Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
# Object to Int64 function
def price_to_float(str_data):
num = (str_data.split(" ")[0])
num = pd.to_numeric((num.replace(".","")).replace(",","."))
print(num)
# df_abstract['Volumen']
df_abstract['Volumen'] = price_to_float(df_abstract['Volumen'])
Guten Abend, das Problem scheint zu sein das hier die Funktion auf die ganze Spalte aber nicht auf die einzelnen Zeilen der Spalte angewandt wird. Kann mir hier jemand helfen?
Danke schonmal!
Das funktioniert gar nicht, weil ein Series-Objekt kein split kennt. Falls Du split_data.str.split meinst, das liefert ein Series-Element von Listen, und mit [0] holst Du Dir das erste Serien-Element, was eine Liste ist, die wiederum kein replace hat. Zum Schluß passt der Kommentar nicht zum Funktionsnamen und die Funktion hat keinen Rückgabewert.
Bei solchen komplizierten Operationen ist apply die einfachere Variante.
Hier stellt sich aber die Frage, warum Du überhaupt Strings in einem Dataframe hast und nicht schon beim Einladen die Daten korrekt konvertierst.
Also das Dataframe hat in dem column Volumen Werte z.B. der Form {123.125,23 EUR} ich würde gerne alle diese Werte in einen float umwandeln z.B. {123125.23}.
Die Funktion habe ich ursprünglich für einen String gemacht. Dachte ich kann das dann irgentwie auf eine ganzes column anwenden.
Hab bevor ich hier gefragt habe schon viel gegoogelt, hab da auch einen Vorschlag mit apply gefunden. Bin damit aber gar nicht zurecht gekommen.
Ja das Dataframe kommt aus einer CSV-Datei. Ok werde mich da mal schlau machen danke für den Tipp. Bin jetzt mit apply auch zum Ziel gekommen ist aber dann natürlich unschön, wenn die Möglichkeit besteht das gleich beim einlesen richtig zu konvertieren. Hast du mir vielleicht ein Stichwort nachdem ich googeln kann? Danke schonmal!