使用python将字典中的条目排序到excel
我正在使用pandas将数据写入excel文件。我想转储数据,因为它是在一个工作表和在第二个工作表中,我希望它在排序的方式。图层是关键,权重是字典中的值 例如,表1应具有下表(未排序): 和sheet2应具有已排序的条目: 我已经试过了使用python将字典中的条目排序到excel,python,excel,pandas,Python,Excel,Pandas,我正在使用pandas将数据写入excel文件。我想转储数据,因为它是在一个工作表和在第二个工作表中,我希望它在排序的方式。图层是关键,权重是字典中的值 例如,表1应具有下表(未排序): 和sheet2应具有已排序的条目: 我已经试过了 df1 = pd.DataFrame.from_dict(dict_weights, orient="index") df1.columns = ['weights'] df2 = pd.DataFrame.from_dict(co
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中,数据应该保持未排序状态
中的预期输出:
表1
Layer; weights
T1_max_pool; 4
activation_9; 1
sum_9; 3
Merge_2; 4
activation_2; 1
T2_max_pool; 4
第2张
Layer; weights
activation_2; 1
activation_9; 1
Merge_2; 4
sum_9; 3
T1_max_pool; 4
T2_max_pool; 4
有什么建议吗??)谢谢 IIUIC,您需要在
层
列上使用排序值
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
。IIUIC,您需要在层
列上使用排序值
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
。将dict更改为列表并使用:
df1 = pd.DataFrame({'weights': list2}, index=list1)
df2 = df1.sort_index()
Dict
有自己的排序键逻辑,如果要打印它,您会看到它没有按预期打印。将Dict更改为列表并使用:
df1 = pd.DataFrame({'weights': list2}, index=list1)
df2 = df1.sort_index()
Dict
有自己的排序键逻辑,如果您要打印它,您会看到它没有按预期打印。在问题中使用可复制的数据而不是图像总是有帮助的。谢谢您的建议!我已经更新了问题;分隔值OrderedDict
只记住插入顺序,但它没有排序(至少不是以直观的方式)。您可以先创建OrderedDict
,然后以排序方式依次插入项目。也就是说,您可以执行sorteddict=orderedict(),而不是orderedict(dict\u weights)
;对于已排序的输入键(dict\u weights):已排序的输入键[key]=dict\u weights[key]
。在问题中使用可复制的数据而不是图像总是有帮助的。感谢您的建议!我已经更新了问题;分隔值OrderedDict
只记住插入顺序,但它没有排序(至少不是以直观的方式)。您可以先创建OrderedDict
,然后以排序方式依次插入项目。也就是说,您可以执行sorteddict=orderedict(),而不是orderedict(dict\u weights)
;对于已排序的输入键(dict\u weights):已排序的输入键[key]=dict\u weights[key]
。我对建议的解决方案进行了更新和查询。它进行排序,但输出与预期略有不同:T1_max_pool | T2_max_pool | activation_2 | activation_9 | merge_2 | sum_9
。它是否可能与大写字母和小写字母有关?我对提议的解决方案有更新和疑问。它进行排序,但输出与预期略有不同:T1_max_pool | T2_max_pool | activation_2 | activation_9 | merge_2 | sum_9
。它是否可能与大写字母和小字母有关?