【问题标题】:Convert pandas dataframe to 2 deep dictionary将 pandas 数据帧转换为 2 个深度字典
【发布时间】:2018-06-20 16:23:40
【问题描述】:

我有一个包含一些数据的 Pandas 数据框,我想将这些数据转换为一个两层深度的字典。

Subject_id    Exam1    Exam2    
Subject_1         9        5                 
Subject_2         7        4                 
Subject_3         3        8                 

现在我想要的是这样的字典结构

{'Subject_1': {'Exam1': 9, 
               'Exam2': 5}
 'Subject_2': {'Exam1': 7, 
               'Exam2': 4}
 'Subject_3': {'Exam1': 3, 
               'Exam2': 8}
}

我基本上尝试使用两个循环,每行一个循环遍历所有主题,然后每列一个循环。然后我像这样构建字典。

for i in df.size[0]:
    for j in df.size[1]:
        # df[i][j] has the score of subject_i and exam_j
        my_dict[df[i]] = df[i][j]

但是我的 Dataframe 很大,我想要一种更优雅的方式来实现这一点(比如使用 zip 创建字典,但由于它是两个深度字典,并且一些信息是按列(主题)和其他信息按行(特定科目的考试笔记)我无法做到。

如何以 Python 风格和优雅的方式从输入数据框中获取所需的 dict?

谢谢。

【问题讨论】:

    标签: python pandas dictionary


    【解决方案1】:

    使用.to_dict('index')

    In [53]: df.set_index('Subject_id').to_dict('index')
    Out[53]:
    {'Subject_1': {'Exam1': 9L, 'Exam2': 5L},
     'Subject_2': {'Exam1': 7L, 'Exam2': 4L},
     'Subject_3': {'Exam1': 3L, 'Exam2': 8L}}
    

    【讨论】:

      【解决方案2】:

      更简单地说,只需df.to_dict(orient="index") 即可。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-08-10
        • 2019-01-14
        • 2019-02-22
        • 2017-07-16
        • 2020-12-22
        • 2017-02-04
        • 1970-01-01
        相关资源
        最近更新 更多