我有以下数据集(df
)。我希望groupby
使用品牌作为索引,获取工人和价值列的平均值以及提供者列的第一个计数。
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()
但是将我的真实数据集视为我想取均值且不想指定每个列的方式,是否有更好的方法来声明默认函数?
有点“取所有非字符串列的均值和字符串列的第一个观察值?”
不,但是编写一些代码来帮助您并不难。
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
。
del f['brand']
df = df.groupby('brand', as_index=False)['workers', 'value', 'provider'].agg(f)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句