簡體   English   中英

Pandas groupby 合計計數值 function

[英]Pandas groupby count values in aggregate function

我有以下 dataframe:

時間 ID OKEY 顏色
2021-05-05 19:16 0 好的 藍色的
2021-05-05 19:16 1 不好 藍色的
2021-05-05 19:17 2 不好 黃色
2021-05-05 19:17 1 好的 紅色的

按 Id 分組然后計算列中每種類型的值('OKEY','COLOR')的最有效方法是什么?

到目前為止,我已經嘗試過使用它:

df.set_index('Time')
df.groupby(['ID', pd.Grouper(key='Time', freq='1min')]).agg(COUNT OKEY=('OKEY', 'count'),total_status=('COLOR', 'count'))

但我只能得到所有 OK,NOT_OKEY / BLUE,YELLOW.. 值的總數。 我想使用 value_counts() 或任何類似的 function 來返回具有每種類型計數的列或索引。

get_dummiesgroupbysum

OKEYCOLOR列進行編碼以將分類值轉換為指示變量,然后按ID和 1 分鍾Grouper對編碼幀進行分組,並對每組的值sum

pd.get_dummies(df.set_index(['ID', "Time"]))\
  .groupby(['ID',  pd.Grouper(freq='1min', level=1)]).sum()

                        OKEY_NOT_OK  OKEY_OK  COLOR_BLUE  COLOR_RED  COLOR_YELLOW
ID Time                                                                          
0  2021-05-05 19:16:00            0        1           1          0             0
1  2021-05-05 19:16:00            1        0           1          0             0
   2021-05-05 19:17:00            0        1           0          1             0
2  2021-05-05 19:17:00            1        0           0          0             1

暫無
暫無

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

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