将DataFrame转换为词典字典

时间:2018-09-01 00:44:40

标签: python pandas dictionary dataframe

我有一个数据框,如下所示:

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'),但这并不是我想要的。

谢谢。

2 个答案:

答案 0 :(得分:5)

您可以对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}}

答案 1 :(得分:1)

略有不同的解决方案也在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")
}