2016-09-14 56 views
2
訂購

熊貓列到字典保留給定下面的數據幀

df = pd.DataFrame({'a':['a','c','b'], 
        'b':['foo','bar','baz']}) 
df 
    a b 
0 a foo 
1 c bar 
2 b baz 

當我創建一個從列的字典,我得到這個:

dict(zip(df.a,df.b)) 
{'a': 'foo', 'b': 'baz', 'c': 'bar'} 

你會發現,它的排序鍵欄(a)自動。

我的問題是:如何避免這種情況?

我想一個字典,看起來像這樣:提前

{'a': 'foo', 'c': 'bar', 'b': 'baz', } 

謝謝!

+3

填充它,但關鍵字典順序不一定是插入順序此無關與熊貓,你必須,如果你想使用orderedDict保留插入順序 – EdChum

+2

您無法控制字典中鍵的順序。 –

+0

OrderedDict工作!謝謝,EdChum。如果您想將它作爲答案發布,我會相應標記。 –

回答

2

無法控制Python字典中鍵的順序。標準庫包含一個不同的數據結構 - OrderedDict - 它記住了添加密鑰的順序。

在這種情況下,您可以通過

In [39]: OrderedDict(df.to_records(index=False)) 
Out[39]: OrderedDict([('a', 'foo'), ('c', 'bar'), ('b', 'baz')])