我有一个数据框,如下所示:
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')
,但这并不是我想要的。
谢谢。
答案 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")
}