Zahl mit Tausendertrenner als String

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
superschlau
User
Beiträge: 26
Registriert: Mittwoch 4. April 2018, 09:12

Salü zäme
Ich möchte in einem String eine Zahl inkl. Tausendertrenner verwenden (z.B. "10'000").
So steht dieser Wert in einer DataFrame als Spaltenüberschrift. In meiner (gekürzten) Anwendung sieht dies etwa so aus:

Code: Alles auswählen

def tabelle(self, dataframe, column):
	df = dataframe.ix(:, ["Spalte1", "Spalte2", "Spalte3", column])

reihe = ["5'000", "10'000", "30'000", "100'000"]	
x = tabelle(dataframe, reihe[2)
Dies ergibt mir eine Fehlermeldung der folgenden Art:

Code: Alles auswählen

KeyError: '["30\'000"] not in index'
Es sieht also so aus, als ob dieses "Hochzeichen" (Tausender) als Sonderzeichen interpretiert wird. Kann man dies irgendwie ausschalten, so dass der Wert als das erkannt wird, als das was er ist, nämlich "30'000".

Danke für Eure Hilf, Jakob
Benutzeravatar
__blackjack__
User
Beiträge: 13925
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@superschlau: Und jetzt mal bitte ein tatsächlich lauffähiges Beispiel ohne Syntaxfehler, denn ``:`` als Funktions- oder Methodenargument geht nicht. Zudem müssen alle Klammernpaare stimmen/vollständig sein.

Dann kannst Du das auch gleich ohne `ix` umschreiben, denn das sollte man nicht mehr verwenden weil es „deprecated“ ist, ansonsten hier aber funktioniert:

Code: Alles auswählen

In [6]: df.ix[:, ["30'000"]]                                                    
/usr/local/bin/ipython:1: DeprecationWarning: 
.ix is deprecated. Please use
.loc for label based indexing or
.iloc for positional indexing

See the documentation here:
http://pandas.pydata.org/pandas-docs/stable/indexing.html#ix-indexer-is-deprecated
  #!/usr/bin/python3
Out[6]: 
   30'000
0       1
1       2
2       3
“Java is a DSL to transform big Xml documents into long exception stack traces.”
— Scott Bellware
Benutzeravatar
ThomasL
User
Beiträge: 1377
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Bei mir funzt das ohne Probleme

Bild[/url]
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
superschlau
User
Beiträge: 26
Registriert: Mittwoch 4. April 2018, 09:12

Danke euch für eure Hinweise.

Den Fehler habe ich gefunden, im DataFrame war das Zeichen (') im Unicode erfasst. Das ergibt eben nicht das "gleiche Zeichen".
Danke und Gruss, Jakob

PS: Wie kann ich meinen Beitrag nun als abgeschlossen markieren???
Antworten