从数据框分组和创建字典

时间:2018-08-27 17:37:06

标签: python-3.x pandas-groupby

我有一个数据框df,我想用它来创建新的数据框df1

这是df的一部分(超过400万行):

      xnum class/subclass
1    86963    004/665000 
51   86963    004/342000 
101  86963    004/392000 
151  86963    004/437000 
201  86963    004/480000 
251  86963    004/526000 
301  86963    004/255080 
351  86939    004/231000 
401  81868    029/603200 
451  81868    004/665000 
501  81868    029/890100 
551  69931    029/603200 
601  69931    015/199000 
651  69931    015/230000 
701  75047    029/603200 
751  75047    123/653000 
801  75047    123/1690TC 
851  75047    123/185700 
901  75047    004/665000 
951  75047    123/190900 

我想创建一个字典,其中键是class/subclass,值是每个出现在xnum行上的class/subclass

对于上述df,一个键:值为"004/665000": "86963", "81868", "75047"

请注意,xnumclass/subclass的dtype是对象,因为我需要保留前导零。

我的问题是:如何从数据框中创建字典?谢谢

2 个答案:

答案 0 :(得分:1)

[20]Qdf = df.groupby('class/subclass')['xnum'].apply(list)
Qdf.to_dict()

[20] {'004/231000': [86939],
 '004/255080': [86963],
 '004/342000': [86963],
 '004/392000': [86963],
 '004/437000': [86963],
 '004/480000': [86963],
 '004/526000': [86963],
 '004/665000': [86963, 81868, 75047],
 '015/199000': [69931],
 '015/230000': [69931],
 '029/603200': [81868, 69931, 75047],
 '029/890100': [81868],
 '123/1690TC': [75047],
 '123/185700': [75047],
 '123/190900': [75047],
 '123/653000': [75047]}

答案 1 :(得分:1)

var x = new Collection<ObjectA>
{
    new ObjectA(),
    new ObjectA(),
    null
};

var result = DoStuff(x, DoStuff);