如何在DataFrame逐行应用函数时忽略异常并继续执行?
处理DataFrame apply时的异常问题
直接在lambda里处理异常不太方便,你可以单独写一个带异常捕获的函数,替代原来的lambda:
- 先定义一个封装了异常处理的函数,调用你的
iv函数时捕获异常,出错时返回NaN(也可以换成你需要的默认值):
import numpy as np def calculate_iv(row): try: return iv(row['Close_x'], row['Close_y'], row['Strike'], row['TTE_x'], 0, flag='c') except Exception: # 遇到任何异常都返回NaN,也可根据需求指定其他默认值 return np.nan
- 然后用这个函数替代原来的lambda执行apply:
df['IV'] = df.apply(calculate_iv, axis=1)
如果需要更精准的异常控制,还可以把Exception换成具体的异常类型(比如ValueError),避免误吞其他严重错误。
你之前用if else效果不好,是因为没法提前预判iv函数会抛出哪些异常,try-except是更通用的兜底方案,能覆盖所有未预见的错误场景。
内容的提问来源于stack exchange,提问作者asimo
相关产品推荐
相关产品推荐

