繁体   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