基于多列条件生成Pandas数据框新列Category_Final的需求
解决Pandas DataFrame生成Category_Final列的问题
没问题,我帮你搞定这个需求!我们可以通过条件判断的优先级顺序结合numpy.select来高效实现规则,具体步骤如下:
1. 还原原始DataFrame
先把你给出的数据集转换成Pandas DataFrame:
import pandas as pd import numpy as np # 构建原始DataFrame df = pd.DataFrame({ 'Product_ID': ['1232', '1343', '2543', '2549', '0349', '8533'], 'Category_A': ['0', 'Unknown', np.nan, 'Y', 'X', 'Y'], 'Category_B': ['0', 'X', '0', 'Y', 'X', 'X'] })
2. 按规则定义条件与对应值
注意规则的优先级:规则1的优先级最高(只要触发就直接返回Unknown),然后是规则2,最后是规则3。我们用np.select来批量处理:
# 定义三个规则对应的条件 conditions = [ # 规则1:Category_A是0、Unknown或NaN df['Category_A'].isin(['0', 'Unknown']) | df['Category_A'].isna(), # 规则2:Category_A与Category_B相等 df['Category_A'] == df['Category_B'], # 规则3:Category_A有效且与Category_B不相等 ~df['Category_A'].isin(['0', 'Unknown']) & ~df['Category_A'].isna() & (df['Category_A'] != df['Category_B']) ] # 对应条件的输出值 values = ['Unknown', '0', 'X'] # 生成新列 df['Category_Final'] = np.select(conditions, values)
3. 查看最终结果
执行后,DataFrame会新增Category_Final列,结果如下:
Product_ID Category_A Category_B Category_Final 0 1232 0 0 Unknown 1 1343 Unknown X Unknown 2 2543 NaN 0 Unknown 3 2549 Y Y 0 4 0349 X X 0 5 8533 Y X X
完全符合你给出的规则要求~
内容的提问来源于stack exchange,提问作者jeangelj
相关产品推荐
相关产品推荐

