[英]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_dummies
、 groupby
和sum
對OKEY
和COLOR
列進行編碼以將分類值轉換為指示變量,然后按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.