Pandas read_sql_query将整数列转换为浮点数

4
我有以下这行代码。
df = pandas.read_sql_query(sql = sql_script, con=conn, coerce_float = False)

使用 SQL 脚本从 Postgres 中提取数据。Pandas 会将某些列设置为 float64 类型,但它们应该只是 int 类型。这些列包含一些空值。是否有一种方法可以在不让 Pandas 将它们设置为 float64 的情况下提取数据呢?

谢谢!


这个问题已经被问了很多次。在Python中,null表示来自Numpy,而Numpy使用float来存储null值(如果你查阅一下,这是有道理的)。因此,在int中没有任何表示null的东西。顺便问一下,int或float有什么关系呢?它们都会计算相同的结果(实际上,在float中精度会更好地保持)。 - Kartik
感谢@Kartik提供的信息。这些是左连接中的键,我想使用它们在另一个查询中创建逗号分隔的字符串。我感到困惑,因为我之前使用R,而当我运行d <- dbGetQuery(conPostgres, postgresQuery.sql)时,它不会进行此转换。 - Peter
顺便问一下,int和float有什么区别吗?它们都会计算相同的结果(实际上,在float中精度会更好地保持)。float64只能准确表示最多2^53的整数。 - Spearman
1个回答

5
根据文档,Numpy中缺少NA表示意味着无法处理整数NA值,因此pandas将整数列提升为浮点数。

啊,真狡猾。我从来没有意识到这一点。鉴于此,我将撤回在上面评论中建议调用 df.astype(np.int32) 的建议。 - StarFox

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接