簡體   English   中英

Pandas:執行多個復雜聚合的慣用方式?

[英]Pandas: idiomatic way to perform multiple complex aggregations?

我有一張如下表:

ID   SCORE
A    NaN
A    NaN
B    1
B    2
C    5

我想要以下 output:

ID    SUM_SCORE   SIZE_SCORE
A     NaN         2
B     3           2
C     5           1

由於我想保留 NaN,我需要使用sum(min_count=1) 所以到目前為止我有以下內容:

grp = df.groupby('ID')
sum_score = grp['SCORE'].sum(min_count=1).reset_index()
size_score = grp['SCORE'].size().reset_index()
result = pd.merge(sum_score, size_score, on=['ID'])

這感覺真的很不雅。 有沒有更好的方法來獲得我正在尋找的結果?

s=df.groupby('ID').SCORE.agg([('sum_score',lambda x : x.sum(min_count=1)),
                             ('size_score','size')] ).reset_index()
  ID  sum_score  size_score
0  A        NaN           2
1  B        3.0           2
2  C        5.0           1

您可以使用以下方法進行聚合:

df_agg = df.groupby("ID", as_index=False).agg(["sum","count"])

# rename your columns
df_agg.columns = ["ID","SUM_SCORE", "SIZE_SCORE"]

暫無
暫無

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

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