Преобразование DataFrame в словарь словарей - PullRequest
0 голосов
/ 01 сентября 2018

У меня есть следующий фрейм данных:

ДФ:

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 голосов
/ 01 сентября 2018

Немного другое решение, также итерирующее по 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")
}
0 голосов
/ 01 сентября 2018

Вы можете использовать словарное понимание с 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}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...