簡體   English   中英

groupby中的pandas聚合函數-默認選項?

[英]pandas aggregate function in groupby - default option?

我有以下數據集( 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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM