开发者社区> 问答> 正文

数据框将两个元素与功能进行比较

我有以下布尔函数,该函数比较两个值,但有一些后备功能:

def __score_bool(a, b,
        default_element_value_if_null=None,
        default_score_if_any_element_is_null=None):
    if (default_element_value_if_null is not None):
        if (a is None): a = default_element_value_if_null
        if (b is None): b = default_element_value_if_null
    if a == b:
         return 1
    if (a is None or b is None) and default_score_if_any_element_is_null:
        return default_score_if_any_element_is_null
    else:
        return 0

现在,我想向数据框添加一个附加字段,以将一个字段与静态值进行比较。例如:

df['score_name'] = df.apply(__score_bool, 'name', 'thomas')

在上面,我想将每一行中的“名称”与值“托马斯”进行比较。一个例子是:

开始:

>>> import pandas as pd
>>> df = pd.DataFrame([{'name': 'eric'}, {'name': 'thomas'}])
>>> df
     name
0    eric
1  thomas

我正在尝试做的是:

name     score_name
'eric'    0
'thomas'  1

我该怎么做?

  • 更新

我目前使用的方法是:

df['score_name'] = df.apply(lambda row: __score_bool(row['name'], 'thomas'), axis=1)

但这似乎非常粗糙,必须先将其传递给lambda函数(以提取行),然后必须将其传递给另一个函数以提取列值。有更直接的方法可以做到这一点吗?

问题来源:stackoverflow

展开
收起
is大龙 2020-03-23 20:24:16 307 0
1 条回答
写回答
取消 提交回答
  • IIUC,您可以执行以下操作:

    df['score_name'] = df['name'].apply(__score_bool, b='thomas')
    

    回答来源:stackoverflow

    2020-03-23 20:24:20
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载