2017-02-07 48 views
0

我正在使用熊貓將數據寫入excel文件。我想將數據原樣轉儲到一張表中,並在第二張表中按照分類的方式存儲數據。圖層是關鍵,權重是字典中的值。使用python將詞典中的詞條排序爲excel熊貓

例如, sheet1中應該有表如下(未分類):

Unsorted entries

和sheet2應該分類條目:

enter image description here

我已經嘗試過OrderedDict

df1 = pd.DataFrame.from_dict(dict_weights, orient="index") 
    df1.columns = ['weights'] 

    df2 = pd.DataFrame.from_dict(collections.OrderedDict(dict_weights), orient="index") 
    df2.columns = ['weights'] 
    df1.to_excel(writer, sheet_name='sheet1') 
    df2.to_excel(writer, sheet_name='sheet2', startcol=3) 

    writer = pd.ExcelWriter(filename, engine='xlsxwriter') 
    writer.save() 

的問題是它在兩張紙上進行分類。我只是希望數據在sheet2和sheet1中排序,它應該保持未排序。

預期在輸出:

Sheet 1中

Layer; weights 
T1_max_pool; 4 
activation_9; 1 
sum_9; 3 
Merge_2; 4 
activation_2; 1 
T2_max_pool; 4 

Sheet 2中

Layer; weights 
activation_2; 1 
activation_9; 1 
Merge_2; 4 
sum_9; 3 
T1_max_pool; 4 
T2_max_pool; 4 

任何建議?? :) 謝謝!

+0

始終有助於在問題中擁有可複製數據而不是圖像。 – Zero

+0

感謝您的建議!我更新了問題;分開的值 – blackbug

+0

'OrderedDict'只是記住了插入順序,但它沒有被排序(至少不是以直觀的方式)。您可以先創建OrderedDict,然後以排序的方式依次插入項目。即而不是'OrderedDict(dict_weights)'你可以做'sorted_dict = OrderedDict();鍵入已排序(dict_weights):sorted_dict [key] = dict_weights [key]'。 –

回答

2

IIUIC,您需要在Layers列上使用sort_values列。

In [503]: writer = pd.ExcelWriter('file.xlsx') 

In [504]: df.to_excel(writer, 'sheet1') 

In [505]: df.sort_values(by='Layers', ascending=True).to_excel(writer, 'sheet2') 

In [506]: writer.save() 

如果您不想索引,請在寫入excel時使用index=False

+0

我對建議的解決方案進行了更新和查詢。它執行排序,但輸出與預期有點不同:'T1_max_pool | T2_max_pool | activation_2 | activation_9 | merge_2 | sum_9'。它有可能需要用Capital和小字母做些什麼嗎? – blackbug

1

更改詞典到列表和用途:

df1 = pd.DataFrame({'weights': list2}, index=list1) 
df2 = df1.sort_index() 

Dict都有自己的排序按鍵的邏輯,如果你是print它,你會看到,你希望它不打印它。