如何强制 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
.
您可以通过 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
我有一个问题,我编写的所有遗留代码都不再有效。
我 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
.
您可以通过 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