Pandas Excel Read-循环时将Integer列转换为Float

时间:2019-04-09 05:10:36

标签: python-3.x pandas

使用熊猫读取excel文件后,我正在验证“ Numberss”列是否只有Integer值。如果存在其他任何值,则显示错误消息。

当我遍历列项目时,值将自动转换为浮点数

for index, item in self.df["Numberss"].items():
     print(item)

如果我的输入列是

5, 5.65, 5.55, 6

print(item)输出为:

5.0, 5.65, 5.55, 6.0

代替

5, 5.65, 5.55, 6

3 个答案:

答案 0 :(得分:2)

这是因为您的列包含整数和null值。熊猫将这些空值读取为 NaN ,该值在内部存储为浮点数。

如果要将列类型设置为 int

,则必须将这些NaN值替换为整数值

答案 1 :(得分:1)

在读取过程中,如果熊猫具有浮点值,则它会自动将其读取为浮点(整列被读取为浮点)

此链接可以帮助您

How to check if float pandas column contains only integer numbers?

答案 2 :(得分:0)

仅提供一些基本示例,以说明您的问题,希望对您有所帮助。

您可能遇到的问题如下:

您的列中有多种数据类型

您的栏中有NaN,在将其转换回int之前,需要先对其进行填充。

sockets

很明显,它们是浮点数,让我们检查一下dtypes。

import numpy as np
import pandas as pd
df = pd.DataFrame(np.random.uniform(0,3.5,size=5),columns=['Nums'])
print(df)
    Nums
0   1.306457
1   1.921983
2   0.811730
3   0.208760
4   1.946754

所以,让我们将其转换为int

print(df.dtypes)
Nums    float64
dtype: object

但是如果我们在df中有text和None类型怎么办?

df['Nums'].astype(int)
print(df)
Nums
0   1
1   1
2   0
3   0
4   1