【发布时间】:2020-11-05 17:41:20
【问题描述】:
Python 3.8 使用 Pandas,从 csv 文件中读取。下面的代码 sn-p 用于检测 projectID 列中的字段之一是否不是 int。问题是当有一个不是 int 的 projectID 时,错误消息会显示第一个 projectID 而不是导致问题的 ID,即使它本身是一个 int。
例如。 projectIDs 读取 ID [1, 3, 5]。它像冠军一样奔跑。没有错误。
例如。 projectIDs 读取 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))
【问题讨论】:
-
什么是“预期行为”?
-
对于第二个示例,预期行为是 - 程序终止说“projectID a5 不是整数
-
因为
pandas只会将整列读取为字符串。第一个项目 id 不是int(注意,实际上,pandas 在后台使用 numpy.dtypes,但遍历该列会将每个项目强制转换为原生 python 类型而不是numpy dtype) 你到底在问什么?正确什么? -
如果将
print(i)语句放在if之前会发生什么情况会很有帮助。 -
刚刚试过了,迈克。有趣的结果:它在终止程序之前只打印出第一个值 1,即使 a5 是问题孩子。如果我确保所有值都是整数,它会将它们全部打印出来,没有任何错误。
标签: python python-3.x pandas csv