![](/img/trans.png)
[英]from a list of dictionary values , want to create dataframe such that first value becomes column and second and third value of dictionary become rows
[英]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.