groupby中的聚合函数-默认选项?

时间:2018-07-09 03:50:57

标签: python pandas dataframe group-by pandas-groupby

我有以下数据集(df)。我想使用品牌作为索引对其进行分组,获取工人和价值栏的均值以及提供商栏的第一个计数。

brand   workers value   provider
H&M      322    56         mark
H&M      450    433        mark
Lindex  678     233        luke
Lindex  543     456        luke
Levi    234     32         chris
Levi    789     12         chris

现在我可以

df = df.groupby('brand')['workers','value','provider']。agg({'workers':mean,'value':mean,'provider':first).reset_index ()

但是将我的真实数据集视为更多列,我想取均值并且不想指定每个列,是否有更好的方法来声明默认函数?

“取所有非字符串列的平均值和字符串列的第一个观察值?”的排序

1 个答案:

答案 0 :(得分:1)

不,但是编写一些代码为您做这些并不难。

f = dict.fromkeys(df, 'mean')
f.update(
    dict.fromkeys(df.columns[df.dtypes.eq(object)], 'first'))

print(f)
{'brand': 'first', 'provider': 'first', 'value': 'mean', 'workers': 'mean'}

然后,您将f传递给agg

df = df.groupby('brand')['workers', 'value', 'provider'].agg(f)

如果要重置索引,则必须从f中删除石斑鱼。

def f['brand']
df = df.groupby('brand', as_index=False)['workers', 'value', 'provider'].agg(f)