Python 是否有办法在pandas>;中加载sql查询1.0.0数据帧使用Int64而不是浮点?

Python 是否有办法在pandas>;中加载sql查询1.0.0数据帧使用Int64而不是浮点?,python,pandas,Python,Pandas,当使用pandas将查询输出加载到数据帧时,标准行为是将包含null的整数字段转换为float,以便null变为NaN 从pandas 1.0.0开始,它们包括一个名为pandas.NA的新类型,用于处理具有空值的整数列。但是,当使用pandas.read_sql()时,当存在空值时,整数列仍以浮点而不是整数进行转换。此外,read_sql()方法不支持dtype参数强制字段,如read_csv() 有没有一种方法可以将查询中的整数列直接加载到Int64数据类型中,而不是先强制它浮动,然后手动将

当使用pandas将查询输出加载到数据帧时,标准行为是将包含null的整数字段转换为float,以便null变为NaN

从pandas 1.0.0开始,它们包括一个名为pandas.NA的新类型,用于处理具有空值的整数列。但是,当使用pandas.read_sql()时,当存在空值时,整数列仍以浮点而不是整数进行转换。此外,read_sql()方法不支持dtype参数强制字段,如read_csv()

有没有一种方法可以将查询中的整数列直接加载到Int64数据类型中,而不是先强制它浮动,然后手动将其转换为Int64?

您是否尝试使用 从表名称中选择isnull(列名称,0)。这会将所有空值转换为0


当某些值为n/a时,整数会自动转换为浮点值,就像布尔值转换为对象一样。

似乎是这样,从当前版本来看,没有直接的方法可以做到这一点。无法将列强制为该数据类型,pandas不会使用该数据类型进行推断


这个线程中讨论了一个类似的问题:

只有在0和NULL之间没有区别的情况下,这个问题才会起作用。所以在很多情况下,这是不适用的。例如,假设您使用此方法将一列读取到数据帧,并立即使用to_sql()将其再次存储到另一个表中。这两个表的内容可能不同(0代表空值)。如果你需要区分这些呢?