Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
pandas:groupby期间的聚合数组,相当于SQL';s数组_agg?_Pandas - Fatal编程技术网

pandas:groupby期间的聚合数组,相当于SQL';s数组_agg?

pandas:groupby期间的聚合数组,相当于SQL';s数组_agg?,pandas,Pandas,我得到了这个数据帧: df1 = pd.DataFrame([ { 'id': 1, 'spend': 60, 'store': 'Stockport' }, { 'id': 2, 'spend': 68, 'store': 'Didsbury' }, { 'id': 3, 'spend': 70, 'store': 'Stockport' }, { 'id': 4, 'spend': 35, 'store': 'Didsbury' }, { 'id':

我得到了这个数据帧:

df1 = pd.DataFrame([
    { 'id': 1, 'spend': 60, 'store': 'Stockport' },
    { 'id': 2, 'spend': 68, 'store': 'Didsbury' },
    { 'id': 3, 'spend': 70, 'store': 'Stockport' },
    { 'id': 4, 'spend': 35, 'store': 'Didsbury' },
    { 'id': 5, 'spend': 16, 'store': 'Didsbury' },
    { 'id': 6, 'spend': 12, 'store': 'Didsbury' },
])
我已按商店对其进行了分组,并得到了按商店列出的总花费:

df.groupby("store").agg({'spend': 'sum'})\
    .reset_index().sort_values("spend", ascending=False)

store        spend   
Didsbury     131  
Stockport    130 
是否有一种方法可以将每个存储的ID作为分组对象中的一列获取?类似于Postgres中的
ARRAY\u AGG
?因此,期望的输出是:

store        spend   ids
Didsbury     131     [2,4,5,6]
Stockport    130     [1,3]

您可以为
id
列传递
list
like聚合函数:

df = (df1.groupby("store").agg({'spend': 'sum', 'id':list})
         .reset_index() 
         .sort_values("spend", ascending=False))
print (df)
       store  spend            id
0   Didsbury    131  [2, 4, 5, 6]
1  Stockport    130        [1, 3]

您可以为
id
列传递
list
like聚合函数:

df = (df1.groupby("store").agg({'spend': 'sum', 'id':list})
         .reset_index() 
         .sort_values("spend", ascending=False))
print (df)
       store  spend            id
0   Didsbury    131  [2, 4, 5, 6]
1  Stockport    130        [1, 3]
我们可以使用,这是一种可用的聚合方法,因为
pandas>=0.25.0

请注意,我们可以立即将列重命名为“ids”:

我们可以使用,这是一种可用的聚合方法,因为
pandas>=0.25.0

请注意,我们可以立即将列重命名为“ids”:


明亮的谢谢-不知道添加了这个方法。太棒了!谢谢-不知道添加了该方法。
       store  spend           ids
0   Didsbury    131  [2, 4, 5, 6]
1  Stockport    130        [1, 3]