Pandas调用API函数新增列时如何跳过JSONDecodeError异常
错误原因
你之前的写法存在三个核心问题:
- 第一种写法把
try...except套在for循环外层,只要触发一次报错整个循环就直接终止,不会继续执行后续行 - 第二种写法
except后面直接写了完整的错误提示文本,不符合Python异常捕获的语法规范 - 每次循环都给df的
new列重复赋值,属于多余操作,既影响性能也没有必要
正确实现代码
首先需要先导入对应的异常类:
import pandas as pd from json import JSONDecodeError # 原有初始化df的逻辑保持不变 df = pd.DataFrame(data = myarray) df.columns=["A"] df['B']= 'US' array_thing=[] for i in range(len(df)): try: # 调用成功就追加返回结果 res = mycoolfunction(df.iloc[i, 0], df.iloc[i, 1]) array_thing.append(res) except JSONDecodeError: # 触发指定错误就追加Error占位,要填空值就改为append(None) array_thing.append("Error") # 循环结束后统一给df赋值新列 df['jsoncode'] = array_thing df
补充说明
如果mycoolfunction还可能抛出网络异常、超时异常等其他类型的错误,可以在except后用括号包含多个需要捕获的异常类型,示例:except (JSONDecodeError, ConnectionError, TimeoutError):
内容的提问来源于stack exchange,提问作者Sid
相关产品推荐
相关产品推荐

