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]