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

Pandas如何让apply跳过执行报错的行并返回成功行的DataFrame

解决方法

要实现跳过转换失败的行,只保留成功转换的记录,可以通过自定义带异常捕获的转换函数来处理:

  1. 编写安全转换函数
import ast
import pandas as pd

def safe_literal_eval(s):
    try:
        # 尝试执行转换
        return ast.literal_eval(s)
    except (ValueError, SyntaxError):
        # 转换失败时返回缺失值,便于后续过滤
        return pd.NA
  1. 应用函数并过滤无效行
    先将函数应用到目标列,再删除转换失败(值为缺失值)的行:
# 对列执行安全转换
df["strings"] = df["strings"].apply(safe_literal_eval)
# 过滤掉转换失败的行
df = df.dropna(subset=["strings"])

如果不想修改原DataFrame的列,可以用assign生成新列后再过滤:

# 生成带转换结果的临时列,再过滤
filtered_df = df.assign(converted_strings=df["strings"].apply(safe_literal_eval)).dropna(subset=["converted_strings"])

原理说明:通过try-except捕获ast.literal_eval抛出的格式错误异常,将转换失败的标记为缺失值,最后用dropna剔除这些无效行,得到仅包含成功转换记录的DataFrame。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 16:22:04