plz |
[8001, 815, 3011] |
815 statt 0815 |
Beide machen aus der Kennung eine Zahl, und die führende Null ist weg. Eine Postleitzahl ist Text. |
menge |
Text: ['1.234', '987', nan] |
1234, 987, NA |
Hier trennen sich die Sprachen: read_csv2 kennt den Punkt als Tausenderzeichen, pandas braucht thousands="." und liest die Spalte sonst als Text. |
preis |
float64 |
numeric |
Das Dezimalkomma war angegeben. |
thousands mit dtype="Int64" |
TypeError |
|
pandas wandelt zuerst in Gleitkomma und kann dann nicht mehr verlustfrei in die ganzzahlige Spalte giessen. Erst lesen, dann astype("Int64"). |
| mit Vorgaben |
['8001', '0815', '3011'], Mengen [1234, 987, <NA>], Summe 2221 |
0815 bleibt; mit col_number() ebenfalls 1234, 987, NA und Summe 2221 |
Int64 mit grossem I trägt fehlende Werte, int64 nicht. |
R mit col_integer() |
|
NA, 987, NA, Summe nur 987 |
Die ausdrückliche Ganzzahl-Vorgabe kennt das Tausenderzeichen nicht und wirft den Wert weg, den read_csv2 ohne Vorgabe richtig gelesen hätte. Für Zahlen mit Trennzeichen ist col_number() die richtige Angabe. |