You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas中如何为空DataFrame创建异常 用try/raise实现异常处理

Pandas空DataFrame场景自定义异常抛出与捕获实现

实现逻辑

  • 第一步:自定义专属异常类,继承Python内置Exception基类,和其他通用异常做区分,方便精准捕获定位问题
  • 第二步:使用Pandas DataFrame自带的.empty属性判断是否为空表,该属性在DataFrame无任何有效数据时返回True,是官方推荐的空表判断方式
  • 第三步:用try块包裹数据校验+业务处理逻辑,检测到空表时用raise语句抛出自定义异常,再通过except块精准捕获该类异常做对应处理

完整示例代码

import pandas as pd

# 定义空DataFrame专属异常
class EmptyDataFrameError(Exception):
    """数据处理场景下空DataFrame抛出的专属异常"""
    pass

def process_score_data(input_df: pd.DataFrame):
    try:
        # 空表校验
        if input_df.empty:
            # 抛出自定义异常,附带明确错误提示
            raise EmptyDataFrameError("当前传入的成绩DataFrame为空,无法执行后续统计计算")
        # 非空场景下的正常业务逻辑,示例为计算平均分
        avg_score = input_df['score'].mean()
        print(f"成绩表处理完成,平均分为:{avg_score}")
        return avg_score
    except EmptyDataFrameError as e:
        # 专门捕获空表异常,执行自定义处理逻辑
        print(f"[错误捕获] 数据校验不通过:{str(e)}")
        # 可按需扩展:返回默认值、记录错误日志、终止流程等
        return None

if __name__ == "__main__":
    # 测试空DataFrame场景(对应示例提供的空数据)
    name_dict = {'name': [], 'score':[]}
    empty_df = pd.DataFrame(name_dict)
    print("测试空DataFrame场景:")
    process_score_data(empty_df)

    print("\n测试非空DataFrame场景:")
    valid_df = pd.DataFrame({'name': ['张三', '李四'], 'score': [90, 85]})
    process_score_data(valid_df)

注意事项

不要单独用len(df) == 0做空表判断,当DataFrame存在列名但无行数据时该判断生效,但遇到无列无行的极端空表场景,.empty的判断准确率更高。捕获异常时只指定自定义异常类即可,不要直接写裸except吞掉所有其他类型的报错,避免掩盖代码本身的逻辑问题。

内容的提问来源于stack exchange,提问作者AK007

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 10:09:47