[英]Group sum and count with two unique columns in Python
我有一個數據集,我想在其中對兩列進行分組,求和並計算這些值的數量。
數據
source ex pw role date
aa 10 hello q222
aa 10 hello q222
bb 15 ok q422
bb 5 no q422
bb 1 sure q422
bb 4 yes q422
想要的
source ex pw count date
aa 20 2 q222
bb 25 4 q422
正在做
#df.groupby(['source','date'])['pw'].agg(['count','sum'])
df.groupby(['ex','date'])['pw'].agg(['count','sum'])
但是,有了這個,我現在必須執行串聯以合並兩個輸出。 任何建議表示贊賞
使用groupby()
和dropna=False
+ rename()
:
out=(df.groupby(['source','ex','date'],dropna=False)['pw'].agg(['count','sum'])
.reset_index().rename(columns={'sum':'pw'}))
或者
groupby()
與dropna=False
和具有命名元組的聚合:
out=(df.groupby(['source','ex'],dropna=False)
.agg(pw=('pw','sum'),count=('pw','count'),date=('date','first'))
.reset_index())
output out
:
source ex date count pw
0 aa NaN q222 2 20
1 NaN bb q422 4 25
嘗試使用groupby
和fillna
創建的新密鑰
out = df.groupby([df.source.fillna(df.ex),df.date]).agg({'source':'first',
'ex':'first',
'pw':'sum',
'role':'count',
'date':'first'}).reset_index(drop=True)
Out[489]:
source ex pw role date
0 aa None 20 2 q222
1 None bb 25 4 q422
嘗試:
>>> df.fillna('').groupby(['source','ex','date']).agg({'pw': [sum, 'count']})
pw
sum count
source ex date
bb q422 25 4
aa q222 20 2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.