Pandas Lesen von sql integer float wurde

Traf ich ein problem, dass wenn ich pandas zu Lesen Mysql-Tabelle, manche Spalten (siehe ‚to_nlc‘) verwendet werden, um integer-wurde eine float-Zahl (automatisch hinzufügen .0 danach).
Kann das jemand herausfinden? Oder einige wahrsagen? Dank sehr viel!

Pandas Lesen von sql integer float wurde
Pandas Lesen von sql integer float wurdePandas Lesen von sql integer float wurde

InformationsquelleAutor Z Xie | 2016-06-13



One Reply
  1. 9

    Problem ist, Ihre Daten enthält NaN Werte, so int wird automatisch umgewandelt, um float.

    Ich denke, Sie können überprüfen NA Typ promotions:

    Bei der Einführung von NAs in ein bestehendes Reihen-oder DataFrame über reindex oder einige andere Mittel, boolean-und integer-Typen gefördert werden, um eine andere „dtype“ um zu speichern die NAs. Diese sind zusammengefasst in dieser Tabelle:

    Typeclass   Promotion dtype for storing NAs
    floating    no change
    object      no change
    integer     cast to float64
    boolean     cast to object

    Während dieses scheinen kann, wie eine schwere trade-off, in der Praxis fand ich es sehr wenige Fälle, wo dies ein Problem in der Praxis. Eine Erklärung für die motivation hier im nächsten Abschnitt.

    • wie können diese vermieden werden? Die integer werden als Bezeichner verwendet, so dass das casting auf float Ursachen Präzisions-Fehler
    • ist möglich, ersetzen Sie NaN zu 0 ? wie df['colname'] = df['colname'].fillna().astype(int) oder df = df.fillna(0).astype(int) ?
    • Bekomme ich jetzt schon als float aus der SQL. Was ich getan habe ist zu werfen die Spalte in einen string in der sql query: z.B. CAST(bigint_column ALS VARCHAR), so bekomme ich es als string in der dataframe. Ich dachte gar nicht daran, dass es einem nicht numerischen Wert mehr, weil die Spalte steht eine ID sowieso.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.