2017-01-10 75 views
-1

我有一个名为pair_candidates的字典。这是各种股票的合并。当我运行:Python数据框字典中的新列

for key, value in pair_candidates.iteritems(): 
    print key 
    for i, x in value.iteritems(): 
     print i 
     print x 

产量:

GOOG 
Equity(26578 [GOOG_L]) 
0.99474625176 
Equity(46631 [GOOG]) 
1.0 
NEM 
Equity(154 [AEM]) 
0.986407479901 
Equity(5261 [NEM]) 
1.0 
USB 
Equity(25006 [JPM]) 
0.976828428881 
Equity(25010 [USB]) 
1.0 
CMA 
Equity(1620 [CMA]) 
1.0 
Equity(8399 [ZION]) 
0.982642475515 
Equity(25006 [JPM]) 
0.980413261534 
AMAT 
Equity(337 [AMAT]) 
1.0 
Equity(7671 [TXN]) 
0.978239746926 
Equity(8677 [MCHP]) 
0.978793774219 

我想是一个数据帧如下,请: enter image description here

+0

你使用'pandas'或'r'吗?你可以给你的词典质疑吗? – jezrael

+0

如果'pandas'你尝试'df = pd.DataFrame(pair_candidates)'? – jezrael

回答

0

至于我试图理解你的观点,你的数据集应看起来像这不是吗?

data = {} 
data['key1'] = {'s1' : 123, 's2' : 1234} 
data['key2'] = {'s3' : 123, 's4' : 1234} 

那里,如果我尝试你的代码打印:

for key,value in data.items(): 
    print(key) 
    for i,x in value.items(): 
     print(i) 
     print(x) 

我得到的输出非常similliar到你所描述什么

key1 
s1 
123 
s2 
1234 
key2 
s3 
123 
s4 
1234 

如果是,U可以这样做:

import pandas as pd 
print(pd.DataFrame(data).T) 

输出wi将是

 s1  s2  s3  s4 
key1 123.0 1234.0 NaN  NaN 
key2 NaN  NaN 123.0 1234.0 
0

一个请求给你,也请张贴样本数据。 我已经解决了您的问题,假设下面的格式

pair_candidates = {'GOOG': 
      { 
       'Equity(26578 [GOOG_L])':0.99474625176, 
       'Equity(46631 [GOOG])':1.0 
      } 
     } 

我们添加此字典传送到数据帧,

import pandas as pd 

indexes = [] 
for k,v in pair_candidates.iteritems(): 
    indexes.append(k) 

df = pd.DataFrame(index=indexes) 

for key, value in pair_candidates.iteritems(): 
    for sub_dict_key, sub_dict_value in value.iteritems(): 
     df.ix[key,sub_dict_key] = sub_dict_value 

是我得到的输出是:

df 
     Equity(46631 [GOOG]) Equity(26578 [GOOG_L]) 
GOOG     1.0    0.994746 

我希望这是你想要的解决方案