DataFrame的多级字典结构



我想用特定的数据格式从DataFrame创建一个多层字典。

通用输入,日期为字符串(不可变(:

cleaned['Date'] = cleaned['Date'].astype(str)
cleaned.tail(3)

具有相应的输出:

Date          Name1_attribute1 Name1_attribute2 Name2_attribute1 Name2_attribute2
29/06/2020    11.04            97.30            19.67            94.28  
30/06/2020    11.05            97.38            19.68            94.31  
01/07/2020    11.06            97.46            19.61            93.95

我正在尝试获得以下字典结构(对于更多的行和列(:

{Name_1:{
29/06/2020:{
'Fixed String Attribute 1' : 11.04,
'Second Fixed String Attribute 2' : 97.30},
30/06/2020:{
'Fixed String Attribute 1' : 11.05,
'Second Fixed String Attribute 2' : 97.38},
01/07/2020:{
'Fixed String Attribute 1' : 11.06,
'Second Fixed String Attribute 2' : 97.46}},
{Name_2:{
29/06/2020:{
'Fixed String Attribute 1' : 19.67,
'Second Fixed String Attribute 2' : 94.28},
30/06/2020:{
'Fixed String Attribute 1' : 19.68,
'Second Fixed String Attribute 2' : 94.31},
01/07/2020:{
'Fixed String Attribute 1' : 19.61,
'Second Fixed String Attribute 2' : 93.95}},  
}

在查阅了DataFrame.to_dict、Ordereddict和SO的文档后,我找不到任何类似的问题。

非常感谢任何关于实现所需输出的建议!

你可以试试这样的东西:

d = {}
df.set_index('Date', inplace=True)
data = df.T
grp = data.groupby(data.index.str[:5])
for i in grp.groups:
d[i] = grp.get_group(i).to_dict()

d:

{'Name1': {'29/06/2020': {'Name1_attribute1': 11.04, 'Name1_attribute2': 97.3},
'30/06/2020': {'Name1_attribute1': 11.05, 'Name1_attribute2': 97.38},
'01/07/2020': {'Name1_attribute1': 11.06, 'Name1_attribute2': 97.46}},
'Name2': {'29/06/2020': {'Name2_attribute1': 19.67,
'Name2_attribute2': 94.28},
'30/06/2020': {'Name2_attribute1': 19.68, 'Name2_attribute2': 94.31},
'01/07/2020': {'Name2_attribute1': 19.61, 'Name2_attribute2': 93.95}}}

然后重命名它们。

您可以尝试将表单宽格式转换为长格式,并将您想要的列作为dict.中的键进行索引

最新更新