当使用pandas将查询的输出加载到DataFrame中时,标准行为是将包含NULL的整型字段转换为浮点型,以便NULL变为NaN。
从pandas 1.0.0开始,它们包含了一个名为pandas.NA的新类型,用于处理具有NULL的整型列。但是,当使用pandas.read_sql()时,当出现NULL时,整型列仍然转换为浮点型,而不是整型。除此之外,read_sql()方法不像read_csv()那样支持使用dtype参数来强制字段。
有没有一种方法可以将查询中的整型列直接加载到Int64数据类型中,而不是先将其强制为浮点型,然后再手动将其转换为Int64?
发布于 2020-03-18 07:53:05
您是否尝试过从table_name中使用select isnull(col_name,0)。这会将所有空值转换为0。
当某些值为n/a时,整数自动转换为浮点值,就像布尔值转换为对象一样。
发布于 2020-03-18 10:48:39
在当前版本中,似乎没有直接的方法可以做到这一点。无法将列强制转换为此数据类型,并且pandas不会使用此数据类型进行推断。
在这个帖子中讨论了一个类似的问题:Convert Pandas column containing NaNs to dtype int
https://stackoverflow.com/questions/60731612
复制相似问题