如何将 pandas 数据框转换为嵌套字典

2024-02-03

我正在运行 Python 3.6 和 Pandas 0.19.2,并且有一个 DataFrame,如下所示:

Name      Chain        Food       Healthy  

George    McDonalds    burger     False
George    KFC          chicken    False
John      Wendys       burger     False
John      McDonalds    salad      True

我想把这个数据框转换成一个字典,如下所示:

health_data = {'George': {'McDonalds': {'Food': 'burger', 'Healthy':False},
                          'KFC':       {'Food': 'chicken', 'Healthy':False}},
               'John':   {'Wendys':    {'Food': 'burger', 'Healthy':False},
                          'McDonalds': {'Food': 'salad', 'Healthy': True}}}

到目前为止我的想法是:

  1. Use df.groupby对名称列进行分组
  2. Use df.to_dict()将数据帧转换为字典,如下所示:health_data = input_data.set_index('Chain').T.to_dict()

想法?预先感谢您的帮助。


我认为你们非常亲密。

Use groupby http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.groupby.html and to_dict http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_dict.html:

df = df.groupby('Name')[['Chain','Food','Healthy']]
       .apply(lambda x: x.set_index('Chain').to_dict(orient='index'))
       .to_dict()

print (df)
{'George': {'KFC': {'Healthy': False, 'Food': 'chicken'}, 
           'McDonalds': {'Healthy': False, 'Food': 'burger'}}, 
'John': {'McDonalds': {'Healthy': True, 'Food': 'salad'},
         'Wendys': {'Healthy': False, 'Food': 'burger'}}}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 pandas 数据框转换为嵌套字典 的相关文章

随机推荐