基于单个列表的python列表排序字典

基于单个列表的python列表排序字典,python,pandas,list,dictionary,nested,Python,Pandas,List,Dictionary,Nested,我已经导入了一个csv文件,并将其数据存储到带有熊猫的字典中,如下所示: import pandas as pd df = pd.read_csv(inputfile) mydict = df.to_dict(orient='list') 现在,我想用一个列表 设置新键 对其他列表排序 通过这样做,我也取得了类似的成就: gb = df.groupby('time') ts = dict(list(gb)) “问题”是我有一个数据帧的字典,而不是列表的字典 基本示例 csv文件: var1

我已经导入了一个csv文件,并将其数据存储到带有熊猫的字典中,如下所示:

import pandas as pd
df = pd.read_csv(inputfile)
mydict = df.to_dict(orient='list')
现在,我想用一个列表

  • 设置新键
  • 对其他列表排序
  • 通过这样做,我也取得了类似的成就:

    gb = df.groupby('time')
    ts = dict(list(gb))
    
    “问题”是我有一个数据帧的字典,而不是列表的字典

    基本示例

    csv文件:

    var1 var2 var3 time var4
    1    0    1.1  0    34
    2    0    2.1  1    150
    3    0    6    2    16
    1    0    1.1  0    34
    2    0    2.1  1    150
    3    0    6    2    16
    1    0    1.1  0    34
    2    0    2.1  1    150
    3    0    6    2    16
    
    随熊猫进口的字典

    mydict = 
    {'var1': [1, 2, 3, 1, 2, 3, 1, 2, 3], 
    'var2': [0, 0, 0, 0, 0, 0, 0, 0, 0], 
    'var3': [1.1, 2.1, 6.0, 1.1, 2.1, 6.0, 1.1, 2.1, 6.0], 
    'time': [0, 1, 2, 0, 1, 2, 0, 1, 2], 
    'var4': [34, 150, 16, 34, 150, 16, 34, 150, 16]}
    
    我想实现的是

    mydict2 = 
    {0: {'var1':[1,1,1], 'var2':[0,0,0], 'var3':[1.1,1.1,1.1], 'var4':[34,34,34]},
     1: {'var1':[2,2,2], 'var2':[0,0,0], 'var3':[2.1,2.1,2.1], 'var4':[150,150,150]},
     2: {'var1':[3,3,3], 'var2':[0,0,0], 'var3':[6,6,6], 'var4':[16,16,16]}}
    
    到目前为止,我得到的结果是相似的,但对于每个
    时间
    我都会得到一个数据帧:

    ts = {0:    var1  var2  var3  time  var4
    0     1     0   1.1     0    34
    3     1     0   1.1     0    34
    6     1     0   1.1     0    34, 
    1:    var1  var2  var3  time  var4
    1     2     0   2.1     1   150
    4     2     0   2.1     1   150
    7     2     0   2.1     1   150, 
    2:    var1  var2  var3  time  var4
    2     3     0   6.0     2    16
    5     3     0   6.0     2    16
    8     3     0   6.0     2    16}
    

    其中,如果我键入
    type(ts[0])
    我会得到
    ,这是可以的(我可以完成工作),但是如果我想要一个列表字典呢?

    在以下内容中使用dict comprehension和
    orient='list'

    你可以做:

    x=df.groupby(“时间”).agg(列表)。to_dict(“索引”)
    打印(x)
    
    印刷品:

    {0:{'var1':[1,1,1],'var2':[0,0,0],'var3':[1.1,1.1],'var4':[34,34],
    1:{'var1':[2,2,2],'var2':[0,0,0],'var3':[2.1,2.1,2.1],'var4':[150150150],
    2:{'var1':[3,3,3],'var2':[0,0,0],'var3':[6.0,6.0,6.0],'var4':[16,16,16]}
    
    d = {k: v.to_dict(orient='list') for k, v in df.set_index('time').groupby('time')}
    print (d)
    {0: {'var1': [1, 1, 1], 'var2': [0, 0, 0], 'var3': [1.1, 1.1, 1.1], 'var4': [34, 34, 34]}, 
     1: {'var1': [2, 2, 2], 'var2': [0, 0, 0], 'var3': [2.1, 2.1, 2.1], 'var4': [150, 150, 150]}, 
     2: {'var1': [3, 3, 3], 'var2': [0, 0, 0], 'var3': [6.0, 6.0, 6.0], 'var4': [16, 16, 16]}}