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

如何按自定义优先级从Pandas多状态列中取最大值生成最差状态列

Pandas自定义优先级取每行最大状态的实现方案
  • 核心思路是先给每个状态绑定自定义优先级的权重值,把字符串比较转为数值比较,再将最大权重映射回原始状态值即可,全程无需手写if-else判断。

简洁向量化实现(推荐,性能更高)

适合绝大多数场景,尤其是数据量较大的情况:

import pandas as pd

# 1. 定义状态与优先级权重的映射,权重越高代表优先级越高(即你定义的更差的状态)
priority_map = {'T':12, 'N':11, '0':10, 'U':9, 'D':8, '1':7, '2':6, '3':5, '4':4, '5':3, '6':2, '8':1}
# 反转映射,方便后续通过权重查原始状态
reverse_priority = {v:k for k,v in priority_map.items()}

# 2. 替换为你实际的6个状态列的列名
status_cols = ['col1', 'col2', 'col3', 'col4', 'col5', 'col6']

# 3. 一键生成WORST STATUS列
df['WORST STATUS'] = df[status_cols].replace(priority_map).max(axis=1).map(reverse_priority)

可选逐行实现(逻辑更直观)

如果需要在取数过程中加额外的自定义判断,可以用逐行apply的写法:

df['WORST STATUS'] = df[status_cols].apply(
    lambda row: reverse_priority[max(priority_map[val] for val in row)],
    axis=1
)

注意:如果数据集里存在不在T, N, 0, U, D, 1, 2, 3, 4, 5, 6, 8范围内的状态值,需要先将对应值补充到priority_map中避免报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 04:21:03