如何强制 Pandas 将数字读取为 "int64" 而不是 "float64"

How to force Pandas to read numbers as "int64" instead of "float64"

我有一个问题,我编写的所有遗留代码都不再有效。

我 pandas 读取了一个 Excel 文件,现在读取的不是 int64,而是 float64。这是一个问题,因为我无法对不同的数据类型执行 .merge 或 .isin。我知道我可以使用 df.blah.astype(int),但重构起来很不方便,似乎没有必要。

我不确定是什么原因造成的。我正在开发 Windows 10、Python 3.5 和 Pandas 18.1 的新版本。所有变化都是从 Windows 7 和 Pandas 18.0.

升级而来

Pandas有什么变化吗?我在发行说明中找不到任何更改。

感谢您的帮助!

我认为 int 值之间的问题列中有一些 NaN。所以 pandas 自动将 int 转换为 float.

Na type promotions.

您可以通过 isnull with boolean indexing:

检查值
import pandas as pd
import numpy as np

df = pd.DataFrame({'A':[1,2,np.nan],
                   'B':[4,5,6]})

print (df)
     A  B
0  1.0  4
1  2.0  5
2  NaN  6

print (df[df.A.isnull()])
    A  B
2 NaN  6