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

如何在Python Pandas不同DataFrame数据集上复用同一条件?

问题

我正在开展一个预测部门优势领域的机器学习项目,需要在不同数据集的不同列上应用同一条件。

示例代码如下:

Condition = [
(X['Y'] >= 3.75) & (X['Y'] <= 4.00),
(X['Y'] >= 3.50) & (X['Y'] < 3.75),
(X['Y'] >= 3.25) & (X['Y'] < 3.50),
(X['Y'] >= 3.00) & (X['Y'] < 3.25),
(X['Y'] < 3.00)
]

category = ['1', '2', '3', '4', '5']
X['Y'] = np.select(Condition , category, default='0') #np for numpy libraries

其中X代表特定数据集,Y代表列名。运行代码时出现报错:

NameError: name X is not defined

请问如何将X作为不同数据集名称、Y作为列名来复用该条件逻辑?

解决方案

要跨不同数据集和列复用该条件逻辑,最实用的方式是把这段逻辑封装成可复用函数,将数据集和列名作为参数传入,既解决NameError问题,又能灵活适配不同场景。

封装后的函数代码

import numpy as np

def apply_category_rule(df, col_name):
    # 定义条件,用传入的数据集和列名替代硬编码的X、Y
    conditions = [
        (df[col_name] >= 3.75) & (df[col_name] <= 4.00),
        (df[col_name] >= 3.50) & (df[col_name] < 3.75),
        (df[col_name] >= 3.25) & (df[col_name] < 3.50),
        (df[col_name] >= 3.00) & (df[col_name] < 3.25),
        (df[col_name] < 3.00)
    ]
    categories = ['1', '2', '3', '4', '5']
    # 对指定列应用分类规则
    df[col_name] = np.select(conditions, categories, default='0')
    return df

调用示例

假设你有已加载好的两个数据集sales_data和performance_data,分别需要处理customer_score和department_rating列,直接调用函数即可:

# 处理销售数据的客户评分列
processed_sales = apply_category_rule(sales_data, 'customer_score')

# 处理绩效数据的部门评级列
processed_performance = apply_category_rule(performance_data, 'department_rating')

原报错原因说明

你遇到的NameError是因为代码直接使用了变量X,但运行时该变量未被定义(比如你还没把目标数据集加载到X变量中)。封装成函数后,只要传入已加载完成的数据集对象,就能避免这类变量未定义的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 13:35:41