[英]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.