python - 使用 pandas 时的异常处理 apply

标签 python pandas dataframe exception-handling apply

我可以使用 series.str.extract 从 pandas 系列中提取子字符串。

ds = pd.Series(['1A apple', '1B pear', '3C orange', 'grape'])
ds.str.extract('(\\d.{1}).*', expand=False)

我最初尝试的是使用 apply 功能。
ds.apply(lambda x: re.search('(\\d.{1}).*', x).group(1))

我收到错误消息:
AttributeError: 'NoneType' object has no attribute 'group'

似乎搜索模式不适用于第四个元素 'grape' .所以它返回一个非类型。我的问题是如何修复上面的 apply 函数以使其工作?我很好奇如何使用 apply 函数来使用 str.extract 完成相同的任务。非常感谢。

最佳答案

您需要一个自定义函数来处理错误,就这么简单。您可以使用 try...except block ,或使用 if测试 re.search 返回的匹配对象的值的语句.

def search(x):
    try:
        return re.search('(\\d.{1}).*', x).group(1)
    except AttributeError:
        return np.nan
ds.apply(search)

0     1A
1     1B
2     3C
3    NaN
dtype: object

关于python - 使用 pandas 时的异常处理 apply,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48838562/

相关文章:

python - 使用 Python 检查 Linux 目录权限

python-2.7 - 根据一列值删除行

python - 使用带有参数的 Pandas groupby() + apply()

python - 如何在 Python 中正确比较来自 psycopg2 的 unicode 字符串?

python - 将字符串(不带分隔符)转换为 IPV6 地址表示形式

python - 在for循环python中捕获错误

python - 如何使用 Pandas 对一系列值进行编码

python - 使用 pandas 和 numpy 参数化堆栈溢出的用户数和声誉

python - 如何在 Python Pandas 中使用一致的随机样本?

python - 计算 DataFrame 每列值的出现次数