【发布时间】:2020-02-03 23:00:14
【问题描述】:
我需要对范围进行数据验证。要检查列值是否在给定范围内,如果值大于或小于给定范围,应该会发生错误并显示发生错误的行号或索引。
我的数据如下:
Draft_Fore
12
14
87
16
90
它应该会产生值 87 和 90 的错误,因为我认为列的范围必须大于 5 且小于 20。
我试过的代码如下:
def validate_rating(Draft_Fore):
Draft_Fore = int(Draft_Fore)
if Draft_Fore > 5 and Draft_Fore <= 20:
return True
return False
df = pd.read_csv("/home/anu/Desktop/dr.csv")
for i, Draft_Fore in enumerate(df):
try:
validate_rating(Draft_Fore)
except Exception as e:
print('Error at index {}: {!r}'.format(i, Draft_Fore))
print(e)
打印行中发生错误的位置
【问题讨论】:
-
请检查您的代码的缩进,它似乎不正确。然后,您的函数不会引发错误,它只会返回 True 或 False ...您可以使用它,例如
if not validate_rating(Draft_Fore):,然后打印消息。 -
我已经更正了我的代码的意图,但 for 循环没有正确迭代@MrFuppes
标签: python-3.x for-loop exception try-catch python-3.6