相关疑难解决方法(0)

从嵌套字典中的项构造pandas DataFrame

假设我有一个带结构的嵌套字典'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.

python dataframe pandas

65
推荐指数
7
解决办法
7万
查看次数

从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)

python dictionary nested dataframe pandas

5
推荐指数
1
解决办法
2072
查看次数

熊猫MultiIndex(超过2个级别)DataFrame到嵌套Dict / JSON

这个问题与类似,但我想进一步。是否可以将解决方案扩展到更多级别?多级数据框的.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)

python dictionary multi-index pandas

5
推荐指数
1
解决办法
1314
查看次数

标签 统计

pandas ×3

python ×3

dataframe ×2

dictionary ×2

multi-index ×1

nested ×1