如何将pandas dataframe和numpy数组转换为字典?

时间:2018-04-07 16:17:20

标签: python pandas numpy dictionary

我有以下pandas数据框,看起来像,

       code      comp                       name  
0   A292340    디비자산운용         마이티 200커버드콜ATM레버리지   
1   A291630  키움투자자산운용         KOSEF 코스닥150선물레버리지   
2   A278240   케이비자산운용        KBSTAR 코스닥150선물레버리지   
3   A267770  미래에셋자산운용            TIGER 200선물레버리지   
4   A267490   케이비자산운용  KBSTAR 미국장기국채선물레버리지(합성 H)   

我喜欢用这个字典制作字典,

{'20180408' :{'A292340' : {comp : 디비자산운용}, {name : 마이티 200커버드콜ATM 레버리지}}}

对不起您的陌生数据,请让我问一下。 我尝试的是,

values = [comp, name]
names = ['comp', 'name']
tmp = {names:values for names, values in zip(names, values)}
tpm = {code:values for values in zip(*tmp)}
aaaa = {date:c for c in zip(*tpm)}
print(aaaa)

aaaa是我试图得到的...而日期只是简单的日期列表,从之前到最后。但是当我运行它时,我收到了错误

TypeError: unhashable type: 'numpy.ndarray'

提前感谢您的回答。

1 个答案:

答案 0 :(得分:0)

这是你想要的吗?首先,将"code"列设置为索引。然后将to_dict"orient="index"一起使用。

df.set_index("code").to_dict("index")

{'A267490': {'comp': '케이비자산운용', 'name': 'KBSTAR 미국장기국채선물레버리지(합성 H)'},
 'A267770': {'comp': '미래에셋자산운용', 'name': 'TIGER 200선물레버리지'},
 'A278240': {'comp': '케이비자산운용', 'name': 'KBSTAR 코스닥150선물레버리지'},
 'A291630': {'comp': '키움투자자산운용', 'name': 'KOSEF 코스닥150선물레버리지'},
 'A292340': {'comp': '디비자산운용', 'name': '마이티 200커버드콜ATM레버리지'}}

使用参数"index"将给出布局:

{index -> {columnName -> valueOfTheColumn}} 

由于我们将code设置为索引,因此我们有

code -> {"comp" -> comp's value, "name" -> name's value}
'A267490': {'comp': '케이비자산운용', 'name': 'KBSTAR 미국장기국채선물레버리지(합성 H)'}