簡體   English   中英

將 pandas DF 轉換為格式化字典

[英]convert pandas DF into a formatted dictionary

假設我有以下 dataframe:

myDF = pd.DataFrame([['A','red'],['B','green'],
       ['C','orange'],['D','purple']], columns = ['letter','color'])

如何將其重新格式化為嵌套字典,以便外部字典的鍵取自字母列,內部字典的鍵取自顏色列名,內部字典的值取自顏色欄...

    key     |     value
-----------------------------
     A        {color: red}

     B        {color: green}

     C        {color: orange}

     D        {color: purple}

我嘗試了對df.to_dict的各種嘗試,但均未成功。 如果我導出為 csv,然后使用DictReader導入,我已經設法以正確的格式獲得它,但這顯然是冗長的。

myFile = csv.DictReader(open('file.csv'))
output = {}
for row in myFile:
    key = row.pop('letter')
    if key in output:
        pass
    output[key] = row

嘗試這個:

myDF.set_index('letter').to_dict('index')

Output:

{'A': {'color': 'red'}, 'B': {'color': 'green'}, 'C': {'color': '橙色'}, 'D': {'color ': '紫色的'}}

使用 dict 理解

{row.letter: {'color': row.color} for row in myDF.itertuples()}

Output

{'A': {'color': 'red'}, 'B': {'color': 'green'}, 'C': {'color': 'orange'}, 'D': {'color': 'purple'}}

您可以通過將letter設置為索引並設置 orient 屬性來實現它 -

myDF.set_index("letter").to_dict(orient="index")

這將完成這項工作:

output_dict  = dict()
for (letter, color) in df.values:
    output_dict[letter] = {'color': color}

你應該試試這個


import pandas as pd
 
myDF = pd.DataFrame([['A','red'],['B','green'],
       ['C','orange'],['D','purple']], columns = ['letter','color'])

mydict = {}
for i in range(0,len(myDF)):
    mydict[myDF['letter'][i]] = myDF['color'][i]
print(mydict)

Answer:-{'A': 'red', 'B': 'green', 'C': 'orange', 'D': 'purple'}

暫無
暫無

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

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