【问题标题】:Transforming DataFrame to dictionary of dictionaries将 DataFrame 转换为字典字典
【发布时间】:2019-02-06 23:47:29
【问题描述】:

我有一个如下的数据框:

df:

Employee Day Hours_Worked
Tom      Monday  5
John     Monday  2 
Tom      Tuesday 3 
John     Tuesday 4

我需要把它放到字典中的字典中,这样输出是这样的:

print(d)

d = {'Tom':{'Monday':5, 'Tuesday':3}, 'John': {'Monday':3, 'Tuesday':4'}..}

我尝试过df.to_dict('dict'),但这并不是我想要的。

谢谢。

【问题讨论】:

  • 对我来说不是很清楚你的数据框的结构是什么?是不是和你粘贴的一样只有一行?列名是什么?

标签: python pandas dictionary dataframe


【解决方案1】:

您可以通过GroupBy 使用字典推导:

res = {k: v.set_index('Day')['Hours_Worked'].to_dict() for k, v in df.groupby(['Employee'])}

# {'John': {'Monday': 2, 'Tuesday': 4}, 'Tom': {'Monday': 5, 'Tuesday': 3}}

【讨论】:

    【解决方案2】:

    稍微不同的解决方案也迭代GroupBy:

    df = pd.DataFrame(
        data = [
            ['Tom', 'Monday', 5],
            ['John', 'Monday', 2], 
            ['Tom', 'Tuesday', 3],
            ['John', 'Tuesday', 4]
        ],
        columns=['Employee', 'Day', 'Hours_Worked']
    )
    
    result = {
        employee: {row["Day"]: row["Hours_Worked"] for _, row in employee_data.iterrows()}
        for employee, employee_data in df.groupby("Employee")
    }
    

    【讨论】:

      猜你喜欢
      • 2016-10-16
      • 2017-12-26
      • 2014-12-30
      • 2021-01-18
      • 2016-05-26
      • 1970-01-01
      • 2011-09-19
      相关资源
      最近更新 更多