分组,按时间计数,然后使用 Pandas 在组内排序

用户882763

我有以下熊猫dataframe-

                 EventID    Institution_Name
TimeCreated     
2021-03-22 15:34:46 40  H1
2021-03-22 18:17:19 40  H2
2021-03-22 20:37:47 40  H2
2021-03-22 20:40:20 40  H2
2021-03-22 21:37:32 40  H2
2021-03-22 22:16:32 40  H2
2021-03-22 23:19:49 40  H2
2021-03-22 23:26:40 40  H2
2021-03-23 00:26:03 40  H3
2021-03-23 01:25:43 40  H4
2021-03-23 04:00:24 40  H5
2021-03-23 13:09:42 40  H6
2021-03-23 13:13:23 40  H1
2021-03-23 15:49:33 40  H7
2021-03-23 17:22:30 40  H8
2021-03-23 17:22:37 40  H8
2021-03-23 17:23:49 40  H9
2021-03-23 18:19:56 40  H2
2021-03-23 18:22:14 40  H2
2021-03-23 18:52:36 40  H10

我想计算每个机构每天的事件数,并按降序对计数进行排序,同时保持按升序排列的天数。例如。最终结果看起来像这样 -

TimeCreated     Institution_Name EventID_count
2021-03-22       H2                7
2021-03-22       H1                1
....
2021-03-23       H2                2
and so on

我正在使用以下 -

grouper = df.groupby([pd.Grouper(freq='1D'), 'Institution_Name'])
grouper['EventID'].count().reset_index().sort_values(['TimeCreated'],ascending=True).sort_values('EventID', ascending=False).head(5)

 but this does not give the desired result.
Xixiaxixi
  1. 按 2 列分组
grouper = df.groupby([pd.Grouper(key='TimeCreated', freq='1D'), 'Institution_Name'])

grouper = grouper.count().groupby('TimeCreated', group_keys=False)
  1. 对每组日期中的元素(计数)进行排序
grouper_count_desc = grouper.apply(lambda x: x.sort_values(by='EventID', ascending=False))
In[65]: grouper_count_desc
Out[65]: 
                              EventID
TimeCreated Institution_Name         
2021-03-22  H2                      7
            H1                      1
2021-03-23  H2                      2
            H8                      2
            H1                      1
            H10                     1
            H3                      1
            H4                      1
            H5                      1
            H6                      1
            H7                      1
            H9                      1
  1. 对日期组进行排序。每组元素的顺序不会改变
grouper_date_asc = grouper_count_desc.sort_values(by='TimeCreated', ascending=True)
In[70]: grouper_date_desc = grouper_count_desc.sort_values(by='TimeCreated', ascending=False) # to show result, I used descending
In[71]: grouper_date_desc
Out[71]: 
                              EventID
TimeCreated Institution_Name         
2021-03-23  H2                      2
            H8                      2
            H1                      1
            H10                     1
            H3                      1
            H4                      1
            H5                      1
            H6                      1
            H7                      1
            H9                      1
2021-03-22  H2                      7
            H1                      1

  1. 重置索引并显示结果
print(grouper_date_asc.reset_index())

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用python-pandas在组内排名

R-组内的分组条形图排序

JavaScript排序日期,然后按时间降序排列

Pandas DataFrame按时间戳分组

Python Pandas按时间排序,按用户ID分组

在组内使用pandas.shift()

按时间戳记sqlite3分组

Python Pandas对组间进行排序,而不对组内进行排序(重新排列分组行,但在groupby之前保持原始行顺序

使用“ groupby”而不在组内进行聚合和排序

分组ID,按时间排序,最后按先除

使用pandas groupby,但保持其他列的顺序,然后在组内移动

我是否需要按时间顺序对日期进行排序才能使用pandas.DataFrame.ewm?

按相关模型计数对记录进行排序,然后按时间顺序进行排序

mysql / php,按用户ID分组,按时间排序

使用linq在组内排序

按时间戳对对象进行排序,然后对依赖项进行分组

SQL - 按时间排序,然后是开头的文本

Pandas 组内的动态分组

Pandas:如何在组内进行值计数

熊猫分组并按组内的值排序

熊猫分组,然后根据组进行排序

在 Pandas 中按时间间隔对数据进行分组

R:使用组重新排序数据框,同时保留组内的顺序

在 Pandas 中,如何计算多列分组后每个组的子组内的平均计数数?

Pandas 数据框:如何按组的最早时间对组进行排序

Pandas groupby 在保留多个聚合的组内进行排序,并使用 facet 对其进行可视化

Groupby 列,按时间戳排序并计算 Pandas Dataframe 中时间戳之间的差异?

Pandas:按时间序列中的组创建索引值

如何使用 Pandas 重采样功能从下到上按时间间隔分组?