不可能。 只有用户可以定义具有功能键的词典和列名列表,并在循环中交换键和值。
data _ stores=PD.data frame ({ ' store ' : [ 1,1,2,2 ],
' item1' : [ 45,200,20,300 ],
' item2' : [ 50,300,17,350 ],
' item3' : [ 53,250,21,400 ] } )
打印(data _ stores ) )。
store item1 item2 item3
0 1 45 50 53
1 1 200 300 250
2 2 20 17 21
3 2 300 350 400
d={'mean':'item1',' sum' : ['item2',' item3']}
out={}
for k,v in d.items () :
ifisinstance(v,list ) :
for x in v:
out[x]=k
else:
out[v]=k
打印(out )是
{'item1': 'mean ',' item2': 'sum ',' item3': 'sum'}
data _ stores _ total=data _ stores.group by (' store ',as_index=False ) (out ) ) ) ) )
打印(data _ stores _ total ) )。
store item1 item2 item3
0 1 122.5 350 303
1 2 160.0 367 421
或:
d={'mean':['item1'],' sum' : ['item2',' item3']}
d1={k: oldk for oldk,oldv in d.items () for k in oldv}
打印(d1)。
{'item1': 'mean ',' item2': 'sum ',' item3': 'sum'}
data _ stores _ total=data _ stores.group by (' store ',as_index=False ).agg (D1 ) )。
打印(data _ stores _ total ) )。
store item1 item2 item3
0 1 122.5 350 303
1 2 160.0 367 421
编辑:
如果要使用同一聚合函数聚合所有列而不使用多列,则可以为所有列创建词典,为每个列表排除差异,然后添加缺少的对键:列值:聚合函数。
out=dict.from keys (data _ stores.columns.difference ([ ' store ',' item1'],' sum ' ) )
out['item1']='mean '
打印(out )是
{'item2': 'sum ',' item3': 'sum ',' item1': 'mean'}
data _ stores _ total=data _ stores.group by (' store ',as_index=False ) (out ) ) ) ) )
打印(data _ stores _ total ) )。
store item2 item3 item1
0 1 350 303 122.5
1 2 367 421 160.0
也可以传递使用此列的自定义函数。
deffunc(x ) :
return x.sum ()/x.mean ) )。
out=dict.from keys (data _ stores.columns.difference ([ ' store ',' item1'],' sum ' ) )
out['item1']=func
打印(out )是
{'item2': 'sum ',' item3': 'sum ',' item1': }
data _ stores _ total=data _ stores.group by (' store ',as_index=False ) (out ) ) ) ) )
打印(data _ stores _ total ) )。
store item2 item3 item1
0 1 350 303 2
1 2 367 421 2