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

如何将DataFrame中severity列的字典转为值为列名的指定结构DataFrame

问题描述

现有一个DataFrame,其中severity列存储着字典数据,示例字典如下:

{'BLOCKER': 'F', 'CRITICAL': 'E', 'MAJOR': 'D', 'MINOR': 'B', 'NO RISK': 'A'}

需要将其转换为目标结构的DataFrame:

  • 目标列名为A、B、C、D、E、F
  • 各列对应的行值依次为NO RISK、MINOR、NA、MAJOR、CRITICAL、BLOCKER
  • 原字典的键需对应到以其值为列名的位置,无匹配的列填充NA
解决方案

要实现这个转换,按以下步骤操作:

  1. 反转字典映射:把原字典的键值对反转,变成{值: 键}的形式,这样就能直接通过列名找到对应的风险等级。
  2. 匹配目标列:按目标列的顺序,用反转后的字典匹配对应的值,找不到匹配项的列填充NA。
  3. 生成目标DataFrame:将匹配后的结果转换成指定格式的DataFrame。

代码实现

import pandas as pd

# 构造示例原始DataFrame
df = pd.DataFrame({
    'severity': [{'BLOCKER': 'F', 'CRITICAL': 'E', 'MAJOR': 'D', 'MINOR': 'B', 'NO RISK': 'A'}]
})

# 定义目标列的固定顺序
target_cols = ['A', 'B', 'C', 'D', 'E', 'F']

# 处理每行的severity字典
def process_severity(severity_dict):
    # 反转字典,让值作为键,原风险等级作为对应值
    reversed_map = {v: k for k, v in severity_dict.items()}
    # 按目标列顺序生成对应内容,无匹配则填'NA'
    return [reversed_map.get(col, 'NA') for col in target_cols]

# 应用转换并生成目标DataFrame
result_df = pd.DataFrame(df['severity'].apply(process_severity).tolist(), columns=target_cols)

# 输出结果
print(result_df)

运行结果

A     B    C     D       E       F
0  NO RISK  MINOR  NA  MAJOR  CRITICAL  BLOCKER

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 21:50:11