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

Python实现:为DataFrame中每个人员选取最高优先级组别

解决DataFrame中按优先级选取组别的问题

针对你的需求,我们可以通过定义优先级映射+逐行处理的方式快速实现,步骤清晰易懂,适合Python新手:

步骤1:定义优先级规则

首先给每个组别分配一个优先级数值,数值越小代表优先级越高:

priority = {'01_high': 1, '02_medium': 2, '03_low': 3}

步骤2:编写处理函数

写一个简单的函数,接收每行数据,比较group1和group2的优先级,返回优先级更高的组别:

def get_highest_priority(row):
    # 获取两个组别的优先级值
    p1 = priority[row['group1']]
    p2 = priority[row['group2']]
    # 优先级高的返回对应组别,相等时返回任意一个都可
    return row['group1'] if p1 < p2 else row['group2']

步骤3:应用函数生成新列

用apply方法将函数作用到DataFrame的每一行,生成新列group3:
完整代码如下:

import pandas as pd

data = {'Name': ['Tom', 'Nick','Jack', 'Ann'],
        'group1': ['01_high', '02_medium', '03_low' , '02_medium'],
        'group2':['03_low', '03_low', '02_medium', '03_low']}
  
df = pd.DataFrame(data)

# 定义优先级映射
priority = {'01_high': 1, '02_medium': 2, '03_low': 3}

# 定义处理函数
def get_highest_priority(row):
    p1 = priority[row['group1']]
    p2 = priority[row['group2']]
    return row['group1'] if p1 < p2 else row['group2']

# 新增group3列
df['group3'] = df.apply(get_highest_priority, axis=1)

# 查看结果
print(df)

运行结果

执行后会得到你需要的DataFrame:

Name     group1     group2     group3
0    Tom    01_high     03_low    01_high
1   Nick  02_medium     03_low  02_medium
2   Jack     03_low  02_medium  02_medium
3    Ann  02_medium     03_low  02_medium

如果你想让代码更简洁,也可以用lambda函数替代单独的处理函数,效果完全一样:

df['group3'] = df.apply(lambda row: row['group1'] if priority[row['group1']] < priority[row['group2']] else row['group2'], axis=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 11:27:28