Python Dataframe字典中的新列

时间:2017-01-10 07:56:19

标签: python dictionary dataframe

我有一个名为pair_candidates的字典。它是各种股票的共同整合。我跑的时候:

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

2 个答案:

答案 0 :(得分: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)

我的输出非常类似于你所描述的

key1
s1
123
s2
1234
key2
s3
123
s4
1234

如果是,你可以这样做:

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

输出将是

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

答案 1 :(得分: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

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