Zahl mit Tausendertrennzeichen in float umwandeln

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
Lachsnacken
User
Beiträge: 5
Registriert: Freitag 10. Mai 2019, 21:13

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
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

das Komma muss weg

Code: Alles auswählen

float('10,566.89'.replace(",",""))
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Lachsnacken
User
Beiträge: 5
Registriert: Freitag 10. Mai 2019, 21:13

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?
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@Lachsnacken: hast Du Dir schonmal die Pandas-Dokumentation zu read_csv durchgelesen?
Da gibt es genau die Parameter, die Du brauchst, z.B: thousands=','
Antworten