2016-12-05 22 views
5

Bir panda veri karesinin sonraki işlem için bir sözlüğe dönüştürüldüğü bir gönderi var. Bunu yapmak içinpanda veri çerçevesi sipariş edilen sözlük için

kodudur: {column -> {index -> value}}

var mı onun yerine bu {column -> {index -> value}} bu almak için hızlı bir şekilde: bir dönüş değeri olarak OrderedDict(column, value)

df = pd.read_excel(open('data/file.xlsx', 'rb'), sheetname="Sheet1") 
dict = df.set_index('id').T.to_dict('dict') 

hangi böyle bir şey verir?

Şu anda, pandalardan oluşturulan sözlüğü kullanıyorum ve bu değerleri tek tek Sıralı Sözlük'e atayım. Sipariş şifreli olduğu gibi bu optimum yol değildir

Örnek girişi:

Unique_id | column1 | column2 | column3 | column 4 
1   | 3  | 4  | 43  | 90 
2   | 54  | 6  | 43  | 54 

ve çıkış böyle bir sipariş sözlüğü olmalıdır: bir Excel böyle dosyası

{1:[3,4,43,90], 2:[54,6,43,54]} 
+0

Endekslerden ne haber? – MMF

+0

@ MMF lütfen açıklayınız. – Pavlos

+0

'OrderedDict (sütun, değer)' endeksi dikkate almaz. Onu tutmak istemiyor musun? ? – MMF

cevap

4

Sözlüğü OrderedDict anahtarını Unique_id sütunundan kullanarak istediğiniz sırayla alabilirsiniz. Aşağıdaki resimde gösterildiği gibi olmalıdır:

from collections import OrderedDict 

# Get the unordered dictionary 
unordered_dict = df.set_index('Unique_id').T.to_dict('list') 

# Then order it 
ordered_dict = OrderedDict((k,unordered_dict.get(k)) for k in df.Unique_id) 
# OrderedDict([(1, [3, 4, 43, 90]), (2, [54, 6, 43, 54])])