我有以下数据框:
时间 | ID | 奥凯 | 颜色 |
---|---|---|---|
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() 或任何类似的函数来返回具有每种类型计数的列或索引。
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句