Seite 1 von 1

Zahl mit Tausendertrennzeichen in float umwandeln

Verfasst: Freitag 17. Mai 2019, 11:26
von Lachsnacken
Hallo liebes Forum,

ich habe eine Datenbank als CSV aus dem Internet heruntergeladen.

Dabei sind die Zahlen im englischen Format mit Tausendertrennzeichen, z.B. '10,566.89'.

In Excel an sich kann ich das nicht ändern, weil jede Zeile in dem Format ist: "Mar 27, 2019,"91,903.40","95,297.25","95,297.25","91,903.40","5.90M","-3.57%"", was zwar perfekt zum Einlesen in Python ist, ich aber die Zahl an sich nicht in Excel umformatieren kann.

Somit wird die Zahl als string anerkannt.

Wie schaffe ich es in Python so eine Zahl in einen float umzuwandeln, damit ich damit arbeiten kann?

Einfaches float('10,566.89') bringt nur einen Fehler.

Beste Grüße
Lachsnacken

Re: Zahl mit Tausendertrennzeichen in float umwandeln

Verfasst: Freitag 17. Mai 2019, 11:59
von ThomasL
das Komma muss weg

Code: Alles auswählen

float('10,566.89'.replace(",",""))

Re: Zahl mit Tausendertrennzeichen in float umwandeln

Verfasst: Samstag 1. Juni 2019, 17:31
von Lachsnacken
Danke für die Antwort Thomas! Ich komme erst jetzt darauf zurück, weil das ein Nebenprojekt ist, wofür ich nur ab und zu Zeit habe.

Die Zahlen, um die es geht, sind in einem pandas Dataframe gespeichert. Wenn ich einen Wert abrufe wird er mir so ausgegeben: ['12,977.71']

Damit kann ich den nicht direkt in den Befehl einspeisen, den du beschrieben hast.

Der Datentyp ist ein numpy array und ich schaffe es nicht, diesen in einen float zu konvertieren.

Der Code

Code: Alles auswählen

print(a.astype(float))
wobei a der Wert aus dem Dataframe ist, gibt nur den Fehler aus "ValueError: could not convert string to float: '12,977.71'"

Ich hoffe das war verständlich...

Hat jemand eine Idee, wie ich das handhaben kann?

Re: Zahl mit Tausendertrennzeichen in float umwandeln

Verfasst: Samstag 1. Juni 2019, 17:52
von Sirius3
@Lachsnacken: hast Du Dir schonmal die Pandas-Dokumentation zu read_csv durchgelesen?
Da gibt es genau die Parameter, die Du brauchst, z.B: thousands=','