如果第一个函数失败,则应用第二个函数

埃托雷扎

我是 Pandas 和 Numpy 的新手。我有一个数据框,我想通过对列的每一行应用一个函数来创建一个新列。让我们举一个简单的例子:

import pandas as pd
import numpy as np

df = pd.DataFrame(columns=["names"], data=["Brussels", 2, "New York"])

def to_lower(value):
    try:
        return value.lower()
    except AttributeError:
        return None

def to_string(value):
    return str(value)

df['lower_names'] = np.vectorize(to_lower)(df['names'])

这个操作效果很好。现在我想将to_string()then the to_lower()only 应用于结果为 None 的“lower_names”行(我不知道这是否很清楚)。

这看起来很基本,但我遇到了麻烦。我可以详细说明我的尝试,但我害怕显得白痴......也许我应该在一两周内学习这两个模块,然后再玩它们,但与此同时,欢迎任何建议。

编辑:@jezrael 解决方案是正确的...对于我的简化示例。现在让我们想象一下,我想应用该np.vectorize(to_string)函数,然后np.vectorize(to_lower)仅在第一个结果为 None 的“名称”列的行上应用,最好的方法是什么?

耶斯列

我认为您需要更改return Nonereturn to_string(value)

def to_lower(value):
    try:
        return value.lower()
    except AttributeError:
        return to_string(value)

def to_string(value):
    return str(value)

df['lower_names'] = np.vectorize(to_lower)(df['names'])


print (df['lower_names'].apply(type))
0    <class 'str'>
1    <class 'str'>
2    <class 'str'>
Name: lower_names, dtype: object

也可以astype用于将所有值转换为str然后str.lower

df['lower_names'] = df['names'].astype(str).str.lower()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

模拟第一个呼叫失败,第二个呼叫成功

将在第一个函数中创建的数组传递给第二个函数

来自第一个函数的变量的值未反映在第二个函数的值中

Spring Integration-如果第一个事务失败,则回滚第二个事务

将第二个参数传递给自动采用第一个参数的函数

Javascript函数具有可选的第一个参数,但传递了第二个参数

Typescript函数定义,以确保第二个参数与第一个参数的类型相同

将函数的第一个arg的类型结果推断为第二个arg的类型

根据第一个ajax函数的输入触发第二个ajax函数

如果第一个输入聚焦,则将第二个输入

返回作为第二个参数传递的数组中第一个参数的索引的函数

如果第一个验证器失败,如何停止执行第二个验证器?

第一个执行后如何调用第二个函数?

如何从第二个引用函数的第一个参数?(python 2.7)

如果第一个php函数引发异常,我如何停止第二个php函数的实现

为什么编译器调用的是第一个重载函数而不是第二个?

用第一个构造函数执行第二个构造函数

函数模板:默认第一个模板参数为第二个

2 setTimeout函数第一个清除第二个javascript

在元素的第二个动画上调用Promise函数而不是第一个?

执行第二个函数,基于第一个函数的结果

为什么第二个 JS 异步函数调用等待第一个完成?

仅在调用第一个函数后调用第二个函数 - 反应原生

有没有办法让第二个函数使用第一个:syntax

TypeScript:如何根据第一个参数省略函数中的第二个参数

如何从第一个输入标签的函数运行第二个输入标签的输入函数

如果第一个函数没有被第二个函数触发,是否可以从一个函数中获取一个变量到另一个函数中?

javascript如何在第二个函数中使用第一个函数输出

创建一个通用函数,比较第一个参数是否为空,如果返回第二个,则返回默认值,否则返回第一个