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

基于多列条件生成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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:10:07