繁体   English   中英

如何将数据帧转换为以下格式的嵌套字典

[英]How to Convert a dataframe into nested dictionary in the following format

   2  3  4  loc_id 
0  b  b  c       1            
1  b  b  c       6            
2  b  a  b       8            
3  b  b  c      10            
4  b  a  b      11            

有人可以帮助我将上述数据帧转换为 Python 中的以下字典,其中列名作为第一个键,其中的字典将键作为某些列的列值,将值作为另一列的列值

{2:{'b':[1,6,8,10,11]},3:{'b':[1,6,10],'a':[8,11]},4:{'c':[1,6,10],'b':[8,11]}}

DataFrame.meltGroupBy.agg和 List 用于MultiIndex Series ,然后创建嵌套字典:

s = df.melt('loc_id').groupby(['variable','value'])['loc_id'].agg(list)

d = {level: s.xs(level).to_dict() for level in s.index.levels[0]}
print (d)
{'2': {'b': [1, 1, 6, 8, 10, 11]}, 
 '3': {'a': [8, 11], 'b': [1, 1, 6, 10]}, 
 '4': {'b': [8, 11], 'c': [1, 1, 6, 10]}}

或创建Series字典和聚合索引以列出:

d = {k: v.groupby(v).agg(lambda x: list(x.index)).to_dict() 
     for k, v in df.set_index('loc_id').to_dict('series').items()}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM