Seite 1 von 1

dataframe dtype object umwandeln

Verfasst: Mittwoch 3. Oktober 2018, 21:40
von SautaRoc
Hallo,

ich habe per

Code: Alles auswählen

df = pd.read_html …….
eine Tabelle in ein Dataframe gelesen.
Wenn ich dann per:

Code: Alles auswählen

print(df.dtypes)
[88 rows x 9 columns]
Basis object
Anzahl int64
dtype: object

die Typen auslese, ergibt sich, dass eine Spalte (Basis) die Zahlen enthält, als object definiert ist.
Die Zahlen sind folgendermassen dargestellt:
  • 8200.00
  • 8400.00
usw.
ich bräuchte diese Zahlen als Integer, also
  • 8200
  • 8400
direkt scheint es nicht zu gehen. Könnte mir jemand einen Tipp für einen Lösungsweg geben?

Vielen Dank

Re: dataframe dtype object umwandeln

Verfasst: Mittwoch 3. Oktober 2018, 22:50
von __blackjack__
@SautaRoc: Die Frage ist warum die als `object` definiert sind. Da muss ja irgendwas in der Spalte sein was nicht in eine Zahl umwandelbar ist.

Re: dataframe dtype object umwandeln

Verfasst: Mittwoch 3. Oktober 2018, 23:48
von SautaRoc
gut, das ist vermutlich das '.00' wobei das einfach die amerikanische Schreibweise ist - also eigentlich wäre das bereits eine Zahl. Demzufolge muss dieser Teil weggeknappst werden?

Re: dataframe dtype object umwandeln

Verfasst: Donnerstag 4. Oktober 2018, 00:18
von __blackjack__
@SautaRoc: Eher nicht, es sei denn Du hast ansonsten Kommas für Nachkommastellen in der Tabelle und beim erkennen. Da ist viel wahrscheinlicher irgendwas in der Spalte das *gar nicht* in eine Zahl umgewandelt werden kann. Das kann man aber ohne mehr Code und Daten zu sehen nicht sagen. Kannst Du die Spalte, also das `Series`-Objekt denn mit ``.astype(float)`` ohne Fehlermeldung umwandeln?

Re: dataframe dtype object umwandeln

Verfasst: Donnerstag 4. Oktober 2018, 09:57
von SautaRoc
danke für die Tipps!

folgendes hat funktioniert:

Code: Alles auswählen

df['Basis'] = df.Basis.astype(float).astype(int)
Es musste also zunächst der object-typ in float umgewandelt werden, um dann ein integer daraus zu erzeugen.

Re: dataframe dtype object umwandeln

Verfasst: Donnerstag 4. Oktober 2018, 10:15
von __blackjack__
@SautaRoc: Das ist aber immer noch etwas mysteriös warum das nicht schon beim einlesen passiert ist, also zumindest das der Datentyp als Gleitkommazahl erkannt wurde.