无法从csv中将int正确识别为int

2024-07-01 07:49:10 发布

您现在位置:Python中文网/ 问答频道 /正文

使用熊猫的Python3.8,从csv文件读入。下面的代码片段用于检测projectID列中的一个字段是否不是int。问题是,当存在不是int的projectID时,错误消息将显示第一个projectID,而不是导致问题的ID,即使它本身是int

例如,projectds读取id[1,3,5]。它跑起来像个冠军。没有错误

例如,在ID[1,3,a5]中读取项目。程序终止时说“projectID 1不是整数”

我怎样才能纠正这个问题

# load projects csv file
projectsFileData = pd.read_csv(projectsFile)

for i in projectsFileData['projectID']:
    if not type(i) == int:
        sys.exit("ERROR: projectID {0} is NOT an integer. Terminating Program.".format(i))

Tags: 文件csv项目代码程序id消息错误
3条回答

请尝试输入以下版本: 例:

s = "10010"

# printing string converting to int base 2 
c = int(s,2) 
print ("After converting to integer base 2 : ", end="") 
print (c) 

# printing string converting to float 
e = float(s) 
print ("After converting to float : ", end="") 
print (e)

根据你的问题int(i,10),10是期望值的基础

projectsFileData = pd.read_csv(projectsFile)

for i in projectsFileData['projectID']:
if not type(int(i,10) == int:
    sys.exit("ERROR: projectID {0} is NOT an integer. Terminating Program.".format(i))

祝你好运

IIUC我想这就是你想要的:

import pandas as pd
from io import StringIO

def str_int_chooser(string):
    return int(string) if string.isnumeric() else string

csv = """projectIDs, Name
1, Project Runway
2, Project Alpha
3, Astronomical-Society
4a, Necronomicon-con"""

csv_file = StringIO(csv)

df = pd.read_csv(csv_file, converters={"projectIDs": str_int_chooser})

print(df)
for i in df["projectIDs"]:
    print(i, type(i))

输出:

  projectIDs                   Name
0          1         Project Runway
1          2          Project Alpha
2          3   Astronomical-Society
3         4a       Necronomicon-con
1 <class 'int'>
2 <class 'int'>
3 <class 'int'>
4a <class 'str'>

可以将列projectID的数据类型设置为字符串:

projectsFileData = projectsFileData['projectID'].astype(str)

相关问题 更多 >

    热门问题