慕慕森
这是不可能的,只有你可以用函数的键和列名的列表定义字典,然后在循环中用值交换键:data_stores = pd.DataFrame({'store': [1, 1, 2, 2], 'item1': [45, 200, 20, 300], 'item2': [50, 300, 17, 350], 'item3': [53, 250, 21, 400]})print (data_stores) store item1 item2 item30 1 45 50 531 1 200 300 2502 2 20 17 213 2 300 350 400d = {'mean':'item1', 'sum' : ['item2', 'item3']}out = {}for k, v in d.items(): if isinstance(v, list): for x in v: out[x] = k else: out[v] = kprint (out){'item1': 'mean', 'item2': 'sum', 'item3': 'sum'}data_stores_total = data_stores.groupby('store', as_index=False).agg(out)print (data_stores_total) store item1 item2 item30 1 122.5 350 3031 2 160.0 367 421或者:d = {'mean':['item1'], 'sum' : ['item2', 'item3']}d1 = {k: oldk for oldk, oldv in d.items() for k in oldv}print (d1){'item1': 'mean', 'item2': 'sum', 'item3': 'sum'}data_stores_total = data_stores.groupby('store', as_index=False).agg(d1)print (data_stores_total) store item1 item2 item30 1 122.5 350 3031 2 160.0 367 421编辑:如果想通过相同的聚合函数聚合所有列而没有几个列,您可以通过所有列创建字典,difference并按列表过滤,然后添加缺失的对键:列值:聚合函数:out = dict.fromkeys(data_stores.columns.difference(['store','item1']), 'sum')out['item1'] = 'mean'print (out){'item2': 'sum', 'item3': 'sum', 'item1': 'mean'}data_stores_total = data_stores.groupby('store', as_index=False).agg(out)print (data_stores_total) store item2 item3 item10 1 350 303 122.51 2 367 421 160.0您还可以传递使用此列的自定义函数:def func(x): return x.sum() / x.mean()out = dict.fromkeys(data_stores.columns.difference(['store','item1']), 'sum')out['item1'] = funcprint (out){'item2': 'sum', 'item3': 'sum', 'item1': <function func at 0x000000000F3950D0>}data_stores_total = data_stores.groupby('store', as_index=False).agg(out)print (data_stores_total) store item2 item3 item10 1 350 303 21 2 367 421 2