假设我有一个带结构的嵌套字典'user_dict':
第1级: UserId(长整数)
第2级:类别(字符串)
第3级:各种属性(浮点数,整数等)
例如,这个字典的条目是:
user_dict[12] = {
"Category 1": {"att_1": 1,
"att_2": "whatever"},
"Category 2": {"att_1": 23,
"att_2": "another"}}
Run Code Online (Sandbox Code Playgroud)
"user_dict"中的每个项目具有相同的结构,"user_dict"包含大量项目,我想将这些项目提供给pandas DataFrame,从属性构建系列.在这种情况下,分层索引对于此目的是有用的.
具体来说,我的问题是,是否存在一种方法来帮助DataFrame构造函数理解该系列应该是从字典中"级别3"的值构建的?
如果我尝试类似的东西:
df = pandas.DataFrame(users_summary)
Run Code Online (Sandbox Code Playgroud)
"级别1"(用户ID)中的项目被视为列,这与我想要实现的目标相反(将用户ID作为索引).
我知道我可以在迭代字典条目后构建系列,但如果有更直接的方法,这将非常有用.类似的问题是询问是否可以从文件中列出的json对象构造pandas DataFrame.
我正在尝试从平坦的Pandas DataFrame实例中找到一种创建(可能是深层次)嵌套字典的通用方法.
假设我有以下DataFrame:
dat = pd.DataFrame({'name' : ['John', 'John', 'John', 'John', 'Henry', 'Henry'],
'age' : [24, 24, 24, 24, 31, 31],
'gender' : ['Male','Male','Male','Male','Male','Male'],
'study' : ['Mathematics', 'Mathematics', 'Mathematics', 'Philosophy', 'Physics', 'Physics'],
'course' : ['Calculus 101', 'Calculus 101', 'Calculus 102', 'Aristotelean Ethics', 'Quantum mechanics', 'Quantum mechanics'],
'test' : ['Exam', 'Essay','Exam','Essay', 'Exam1','Exam2'],
'pass' : [True, True, True, True, True, True],
'grade' : ['A', 'A', 'B', 'A', 'C', 'C']})
dat = dat[['name', 'age', 'gender', 'study', 'course', 'test', 'grade', 'pass']] #re-order columns to …Run Code Online (Sandbox Code Playgroud) 这个问题与此类似,但我想进一步。是否可以将解决方案扩展到更多级别?多级数据框的.to_dict()方法有一些有希望的选择,但是大多数方法将返回由元组(即(A, 0, 0): 274.0)索引的条目,而不是将其嵌套在字典中。
有关我要完成的工作的示例,请考虑以下多索引数据框:
data = {0: {
('A', 0, 0): 274.0,
('A', 0, 1): 19.0,
('A', 1, 0): 67.0,
('A', 1, 1): 12.0,
('B', 0, 0): 83.0,
('B', 0, 1): 45.0
},
1: {
('A', 0, 0): 254.0,
('A', 0, 1): 11.0,
('A', 1, 0): 58.0,
('A', 1, 1): 11.0,
('B', 0, 0): 76.0,
('B', 0, 1): 56.0
}
}
df = pd.DataFrame(data).T
df.index = ['entry1', 'entry2']
df
# output:
A B …Run Code Online (Sandbox Code Playgroud)