Pandas groupby 统计聚合函数中的值

亚辛

我有以下数据框:

时间 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_dummiesgroupbysum

编码列OKEY,并COLOR以分类值转换成指示器变量,那么组由编码帧ID1分钟Groupersum每组的值

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章