Pandas读取sql整数变为浮点数

Z X*_*Xie 10 python mysql int pandas

我遇到了一个问题,当我使用pandas读取Mysql表时,一些列(参见'to_nlc')曾经是整数变成了一个浮点数(之后自动添加.0).任何人都可以搞清楚吗?或者一些猜测?非常感谢!

在此输入图像描述 在此输入图像描述在此输入图像描述

jez*_*ael 9

问题是您的数据包含NaN值,因此int会自动转换为float.

我想你可以查看NA类促销:

当通过reindex或其他方式将NAs引入现有Seri​​es或DataFrame时,布尔和整数类型将被提升为不同的dtype以存储NA.这些表总结如下:

Typeclass   Promotion dtype for storing NAs
floating    no change
object      no change
integer     cast to float64
boolean     cast to object
Run Code Online (Sandbox Code Playgroud)

虽然这似乎是一个沉重的权衡,但在实践中我发现很少有这种情况在实践中存在.下一节中对动机的一些解释.

  • 怎么能避免这个?整数用作标识符,因此转换为float会导致精度错误 (2认同)
  • @HananShteingart - 是否可以将“NaN”替换为“0”?像`df['colname'] = df['colname'].fillna().astype(int)`或`df = df.fillna(0).astype(int)`? (2认同)