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

标签 python pandas numbers int nan

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

我让 pandas 读取一个 Excel 文件,它现在读取为 float64,而不是 int64。这是一个问题,因为我无法对不同的数据类型执行 .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 检查值与 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

关于python - 如何强制 Pandas 将数字读取为 "int64"而不是 "float64",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37843053/

相关文章:

python - 如何为binary_crossentropy、activation=sigmoid和activation=softmax指定model.compile?

python - 如何比较具有相同索引的两行并根据特定条件删除一行?

python - 将一个 pandas DataFrame 的副本合并到另一个 DataFrame 的每一行中?

performance - 斐波那契数列算法

python - 原型(prototype) iPhone 应用程序和 Python SimpleHTTPServer 之间的简单安全性

python - 基于query_params的列表方法中的Django rest框架缓存响应

python - 如何从 float 中删除字符?

c - 运算符 `<--` 在 C 中做什么?

ruby - 如何将数字 1000 格式化为 "1 000"

Python 2.6.5 : Divide timedelta with timedelta