2017-01-10 77 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 

我希望這是你想要的解決方案