【问题标题】:panda dataframe to ordered dictionary熊猫数据框到有序字典
【发布时间】:2017-04-20 09:12:44
【问题描述】:

有一篇文章将熊猫数据框转换为字典以进行进一步处理。

执行此操作的代码是:

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

产生如下内容:{column -> {index -> value}}

有没有一种快速的方法来代替这个{column -> {index -> value}} 得到这个:OrderedDict(column, value) 作为返回值?

目前,我正在使用从 pandas 生成的字典,并将这些值一一分配到有序字典中。这不是最佳方式,因为订单被打乱了

示例输入: 像这样的 Excel 文件:

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

输出应该是一个有序字典,像这样:

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

【问题讨论】:

  • 索引呢?
  • @MMF 请解释一下。
  • OrderedDict(column, value) 不考虑索引。不想保留? ?
  • @MMF 没有。因为,列值将作为我的 id。没有意义
  • 你能发布一个小的 DataFrame 并显示输出应该是什么样子吗?

标签: python pandas dictionary


【解决方案1】:

您可以使用OrderedDictUnique_id 列中的键来按所需顺序获取字典。以下应作为说明:

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])])

谢谢!

【讨论】:

    猜你喜欢
    • 2016-10-17
    • 2017-08-02
    • 2017-02-27
    • 2020-07-23
    • 1970-01-01
    • 2021-07-17
    • 2018-12-11
    • 2020-07-22
    • 2021-10-26
    相关资源
    最近更新 更多