首页 > 解决方案 > 如何使用 Pandas 作为函数将数值重新分类到新的分组中,没有条件限制

问题描述

我想将 AGE 变量值重新分类为组 (AGE_RECAT)。例如,当 AGE 值介于 1 和 5 之间时,将 AGE_RECAT 分配为“ONE”。

我将函数设为:

def numeric_recat(df, var, condition_dict):
    # return a pandas column
    # condition_dict includes return value (key) and return condition (start numeric value, end numeric value)
    # i.e., {'Group 1': [1, 2], 'Group 2': [2, 3]}
    for key, value in condition_dict.items():
        if (df[var] >= value[0]) & (df[var] <= value[1]):
            return (str(key))
        else: return np.nan

并尝试将其称为:

df_pc['AGE_RECAT'] = vc.numeric_recat(df_pc, 'AGE', condition_dict=
    {'One': [1, 5],
    'Two': [6, 10],
    'Three': [11, 64],
    'Four': [65, 300]
    })

但收到此错误:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

编辑以解决重复的建议:

虽然总体目标是相同的,但类似问题中的答案不适用于我需要的特定条件格式。我首选的条件格式是单个字典,而答案需要两个列表(箱和名称)。

标签: python-3.xpandasfunctioncategoriescategorization

解决方案


推荐阅读