如何在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
相关产品推荐
相关产品推荐

