簡體   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