2016-11-30 31 views
0

所以,我必須創建一個數據框。我不介意我的來源是一個字典或字典清單。列表中的Python數據框

List of Dict: 
[{'A': 'First', 'C': 300, 'B': 200}, 
{'A': 'Second', 'C': 310, 'B': 210}, 
{'A': 'Third', 'C': 330, 'B': 230}, 
{'A': 'Fourth', 'C': 340, 'B': 240}, 
{'A': 'Fifth', 'C': 350, 'B': 250}] 

OR

{'First': {'C': 300, 'B': 200}, 
'Second':{'C': 310, 'B': 210} }, 
'Third': {'C': 330, 'B': 230}, 
'Fourth': {'C': 340, 'B': 240}, 
'Fifth': {'C': 350, 'B': 250} } 

我希望我的數據幀像這樣

  C  B 
First 300 200 
Second 310 210 
Third 330 230 
Fourth 340 240 
Fifth 350 250 

基本上,這表明其中一列成爲指數...

+0

我使用的是dataFrame。問題是我無法弄清楚如何使字典索引'A'的內容作爲數據幀索引 –

回答

3

您也可以使用pd.DataFrame.from_records()在這裏你可以設置一個特定的列是指數:

pd.DataFrame.from_records([{'A': 'First', 'C': 300, 'B': 200}, 
{'A': 'Second', 'C': 310, 'B': 210}, 
{'A': 'Third', 'C': 330, 'B': 230}, 
{'A': 'Fourth', 'C': 340, 'B': 240}, 
{'A': 'Fifth', 'C': 350, 'B': 250}], index = ['A']) 

enter image description here

+0

感謝Rob/Psidom ..這兩個解決方案都爲我工作。 –

2

使用您的第一個數據集,這裏是一種方式:

In [15]: df=pd.DataFrame(l, index=[d['A'] for d in l]) 

In [16]: del df['A'] 

In [17]: df 
Out[17]: 
      B C 
First 200 300 
Second 210 310 
Third 230 330 
Fourth 240 340 
Fifth 250 350 

[5 rows x 2 columns] 

從您的第二個數據集,這裏是另一種方法。請注意,由於字典中鍵的順序是任意的,因此DataFrame中的行順序也是任意的。

In [27]: pd.DataFrame(data=l2.values(), index=l2.keys()) 
Out[27]: 
      B C 
Fifth 250 350 
Second 210 310 
Fourth 240 340 
Third 230 330 
First 200 300 

[5 rows x 2 columns] 
+0

x = pd.DataFrame(data,index = [x ['A'] for x in data]).. 。是的,那也是我想知道的...謝謝Rob –

2

詞典列表:

l = [{'A': 'First', 'C': 300, 'B': 200}, 
{'A': 'Second', 'C': 310, 'B': 210}, 
{'A': 'Third', 'C': 330, 'B': 230}, 
{'A': 'Fourth', 'C': 340, 'B': 240}, 
{'A': 'Fifth', 'C': 350, 'B': 250}] 


df = pd.DataFrame.from_records(l).set_index('A') 

詞典:

d = {'First': {'C': 300, 'B': 200}, 
'Second':{'C': 310, 'B': 210}, 
'Third': {'C': 330, 'B': 230}, 
'Fourth': {'C': 340, 'B': 240}, 
'Fifth': {'C': 350, 'B': 250} } 

df = pd.DataFrame.from_dict(d, orient='index')