簡體   English   中英

熊貓:價值按多列組計算

[英]Pandas: Value counts by multi-column groupby

我有一個Pandas數據框,我按兩列分組:ID和Item。 然后我在每組(最大)中保留最后5次出現,並最終想要計算一種特定類型的出現次數的比率。具體來說,我想計算每個ID的'U'的計數 - 項目除以發生的總次數。

我在最后一步遇到了麻煩 - 我不確定如何從下面的一般值計數到每個ID-Item分組的比率。 任何提示將不勝感激 - 謝謝!

d={'ID':[1,1,1,1,1,2,2,2,2,2],'Item': ['box','box','ball','ball','box','box','box','ball','box','ball'],'Direction':['D','U','U','D','U','U','D','D','D','D']}
df=pd.DataFrame(data=d)

z=company_item['revision_arrow'].value_counts()

groups=df.groupby(['ID','Item'])
max_count=5
lastfive=groups.head(max_count).reset_index(drop=True)

#count_series=lastfive['Direction'].value_counts()
count_series=groups['Direction'].value_counts()

使用value_counts ,可以選擇規范化結果。 您可以使用此參數,然后將生成的DataFrame索引為僅包含U行:

out = (df.groupby(['ID', 'Item'])
          .Direction.value_counts(normalize=True)
          .rename('ratio').reset_index())

out.loc[out.Direction.eq('U')]

   ID  Item Direction     ratio
1   1  ball         U  0.500000
2   1   box         U  0.666667
6   2   box         U  0.333333

如果你想要計算每個ID組的計數('U')除以所有計數('U'),你可以使用apply定義的函數:

d={'ID':[1,1,1,1,1,2,2,2,2,2],'Item': ['box','box','ball','ball','box','box','box','ball','box','ball'],'Direction':['D','U','U','D','U','U','D','D','D','D']}
df=pd.DataFrame(data=d)


def func(df):
    return len(df[df.Direction == 'U'])

df.groupby('ID').apply(func) / len(df[df.Direction == 'U'])

輸出:

ID
1    0.75
2    0.25

如果需要,您可以按ID和項進行分組。

暫無
暫無

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

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