簡體   English   中英

一個 dataframe 有字典,我想要 dataframe 這樣字典的鍵變成行和值是列

[英]a dataframe having dictionary , i want dataframe in such a way that dictionary's key becomes the rows and value being the column

{'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

這應該這樣做。 (編輯為交換鍵/值)

def swap_dict(d):
    return pd.Series({value:key for key, value in d.items()})

df.severity.apply(swap_dict)

如果您有一系列字典作為輸入,請使用:

df2 = pd.json_normalize(df['severity'])

cols = df2.groupby(np.zeros(len(df2))).first().squeeze()

df2 = (df2
       .notna().mul(cols.index)
       .set_axis(cols, axis=1)
       .rename_axis(columns=None)
       )

Output:

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

使用的輸入:

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

df = pd.DataFrame({'severity': [dic]})

output 在具有多行的輸入上的示例:

         F         E      D      B        A      O
0  BLOCKER  CRITICAL  MAJOR  MINOR  NO RISK       
1  BLOCKER  CRITICAL         MINOR  NO RISK  OTHER
``

一個簡單的解決方案:

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

inv_map = {v: k for k, v in input_map.items()}  # {'F': 'BLOCKER', 'E': 'CRITICAL', 'D': 'MAJOR', 'B': 'MINOR', 'A': 'NO RISK'}

pd.DataFrame({k: [inv_map.get(k, 'NA')] for k in 'ABCDEF'})
         A      B   C      D         E        F
0  NO RISK  MINOR  NA  MAJOR  CRITICAL  BLOCKER
import pandas as pd

mdi = {"BLOCKER": ["F"], "CRITICAL": ["E"], "MAJOR": ["D"], "MINOR": ["B"], "NO RISK": ["A"]}

pd.DataFrame.from_records({v[0]: [k] for k, v in mdi.items()})

Output:

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

您需要自己將其應用於源數據中的列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM