Python 在Pandas中的groupby之后聚合具有不同函数的不同列集
我希望能够在数据帧中传递包含列名的列表的名称,并在groupby之后将不同的聚合函数应用于每个集合 因此,一次天真而失败的尝试如下:Python 在Pandas中的groupby之后聚合具有不同函数的不同列集,python,pandas,group-by,aggregate,Python,Pandas,Group By,Aggregate,我希望能够在数据帧中传递包含列名的列表的名称,并在groupby之后将不同的聚合函数应用于每个集合 因此,一次天真而失败的尝试如下: import pandas as pd import seaborn as sns mpg= sns.load_dataset('mpg') variables_to_mean = ['cylinders', 'displacement'] variables_to_median = ['weight', 'horsepower'] mpg.groupby(
import pandas as pd
import seaborn as sns
mpg= sns.load_dataset('mpg')
variables_to_mean = ['cylinders', 'displacement']
variables_to_median = ['weight', 'horsepower']
mpg.groupby(['model_year', 'origin']).agg({ variables_to_mean : 'mean', variables_to_median : 'median'})
TypeError: unhashable type: 'list'
如何实现我的目标?通过dict.fromkeys创建字典,并一起:
variables_to_mean = ['cylinders', 'displacement']
variables_to_median = ['weight', 'horsepower']
d = {**dict.fromkeys(variables_to_mean, 'mean'),**dict.fromkeys(variables_to_median, 'median')}
print (d)
{'cylinders': 'mean', 'displacement': 'mean', 'weight': 'median', 'horsepower': 'median'}
df = mpg.groupby(['model_year', 'origin']).agg(d)
print (df.head())
cylinders displacement weight horsepower
model_year origin
70 europe 4.000000 107.800000 2375.0 90.0
japan 4.000000 105.000000 2251.0 91.5
usa 7.636364 336.909091 3651.0 167.5
71 europe 4.000000 95.000000 2069.5 73.0
japan 4.000000 88.250000 1951.5 78.5