商店字典在 pandas 数据帧 [英] store dictionary in pandas dataframe

查看:92
本文介绍了商店字典在 pandas 数据帧的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想将aa字典存储到数据框中

I want to store a a dictionary to an data frame

dictionary_example={1234:{'choice':0,'choice_set':{0:{'A':100,'B':200,'C':300},1:{'A':200,'B':300,'C':300},2:{'A':500,'B':300,'C':300}}},
   234:{'choice':1,'choice_set':0:{'A':100,'B':400},1:{'A':100,'B':300,'C':1000}},
   1876:{'choice':2,'choice_set':0:{'A': 100,'B':400,'C':300},1:{'A':100,'B':300,'C':1000},2:{'A':600,'B':200,'C':100}}
  }

/ p>

That put them into

id choice  0_A  0_B  0_C  1_A  1_B  1_C  2_A  2_B  2_C  
1234  0     100  200 300  200  300  300  500  300  300
234  1      100  400  -   100  300  1000  -    -    -
1876  2     100  400  300  100  300  1000 600 200 100


推荐答案

我认为以下是非常接近的,核心思想是简单的将这些字典转换成json并依赖于pandas.read_json来解析它们。

I think the following is pretty close, the core idea is simply to convert those dictionaries into json and relying on pandas.read_json to parse them.

dictionary_example={
        "1234":{'choice':0,'choice_set':{0:{'A':100,'B':200,'C':300},1:{'A':200,'B':300,'C':300},2:{'A':500,'B':300,'C':300}}},
       "234":{'choice':1,'choice_set':{0:{'A':100,'B':400},1:{'A':100,'B':300,'C':1000}}},
       "1876":{'choice':2,'choice_set':{0:{'A': 100,'B':400,'C':300},1:{'A':100,'B':300,'C':1000},2:{'A':600,'B':200,'C':100}}}

    }

df = pd.read_json(json.dumps(dictionary_example)).T


def to_s(r):
    return pd.read_json(json.dumps(r)).unstack()

flattened_choice_set = df["choice_set"].apply(to_s)

flattened_choice_set.columns = ['_'.join((str(col[0]), col[1])) for col in flattened_choice_set.columns] 

result = pd.merge(df, flattened_choice_set, 
         left_index=True, right_index=True).drop("choice_set", axis=1)

result

这篇关于商店字典在 pandas 数据帧的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆