【问题标题】:Sorted entries from dictionary to excel using python Pandas使用python Pandas将字典中的条目排序到excel
【发布时间】:2017-06-24 18:55:33
【问题描述】:

我正在使用 pandas 将数据写入 excel 文件。我想转储数据,因为它在一张纸中,而在第二张纸中我希望它以排序的方式。层是键,权重是字典中的值。

例如sheet1 应该有如下表(未排序):

并且 sheet2 应该有排序的条目:

我已经尝试过 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 中它应该保持未排序。

预期输出:

Sheet1

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

Sheet2

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

有什么建议吗?? :) 谢谢!

【问题讨论】:

  • 总是有助于在问题中包含可复制的数据而不是图像。
  • 感谢您的建议!我已经更新了问题;分隔值
  • OrderedDict 只记得插入的顺序,但它没有排序(至少不是以直观的方式)。您可以先创建OrderedDict,然后以排序的方式一个接一个地插入项目。 IE。而不是OrderedDict(dict_weights) 你可以做sorted_dict = OrderedDict(); for key in sorted(dict_weights): sorted_dict[key] = dict_weights[key]

标签: python excel pandas


【解决方案1】:

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

【讨论】:

  • 我对建议的解决方案进行了更新和查询。它进行排序,但输出与预期有点不同:T1_max_pool | T2_max_pool | activation_2 | activation_9 | merge_2 | sum_9。是否可能与大写字母和小字母有关?
【解决方案2】:

将 dict 更改为列表并使用:

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

Dict 有自己的键排序逻辑,如果你是print,你会看到它没有按预期打印。

【讨论】:

    猜你喜欢
    • 2021-09-04
    • 1970-01-01
    • 2017-05-04
    • 1970-01-01
    • 2013-05-01
    • 2015-04-13
    • 2021-12-25
    • 1970-01-01
    • 2019-09-21
    相关资源
    最近更新 更多