使用熊猫读取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
答案 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