【发布时间】:2021-09-19 02:06:04
【问题描述】:
我想创建一个数据框,其列作为星期几,每个人的姓名和相应的开始/结束时间。到目前为止,我可以将数据从字典中获取到 Dataframe,但我正在努力使索引正确。我设法从这个问题Python - how to load nested dictionary into Pandas dataframe? 中获得了一些帮助,但我不确定如何重新排列索引以实现我所需要的。
我知道我需要 .drop Times 专栏,但在那之后我就没有想法了。我想以某种方式将row[0] 设置为索引,但我不确定这是否是最好的方法。
这是我目前所做的工作:
数据:
employees = {"Mon":{
"Name":{"0":"John","1":"Nick","2":"Ali","3":"Joseph"},
"Start":{"0":"9a","1":"9a","2":"3p","3":"3p"},
"End":{"0":"5p","1":"5p","2":"11p","3":"11p"},
},
"Tues":{
"Name":{"0":"John","1":"Nick","2":"Ali","3":"Joseph"},
"Start":{"0":"9a","1":"9a","2":"3p","3":"3p"},
"End":{"0":"5p","1":"5p","2":"11p","3":"11p"},
}
}
创建数据框的代码:
dict_df = pd.DataFrame.from_dict({(i,j): employees[i][j]
for i in employees.keys()
for j in employees[i].keys()}, orient='index').reset_index().rename(
{'level_0': 'Day', 'level_1': 'Name'}, axis=1)
当前输出:
Day Name 0 1 2 3
0 Mon Name John Nick Ali Joseph
1 Mon Start 9a 9a 3p 3p
2 Mon End 5p 5p 11p 11p
3 Tues Name John Nick Ali Joseph
4 Tues Start 9a 9a 3p 3p
5 Tues End 5p 5p 11p 11p
需要的输出:
Days Times John Nick Ali Joseph
0 Mon Start 9a 9a 3p 3p
1 Mon End 5p 5p 11p 11p
2 Tues Start 9a 9a 3p 3p
3 Tues End 5p 5p 11p 11p
【问题讨论】:
标签: python pandas dataframe dictionary nested