列表

时间:2016-11-30 18:35:40

标签: python pandas dataframe

所以,我必须创建一个数据帧。我不介意我的来源是一个词典或词典列表。

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

基本上,建议其中一列成为索引...

3 个答案:

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

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

答案 2 :(得分:2)

Dict列表:

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')