python - 每小时汇总 pandas 计数

标签 python python-3.x pandas

我有以下数据框:

                      hour  spike  spike_count
date_time           
2014-11-22 00:00:00     0     0     0
2014-11-22 01:00:00     1     1     0
2014-11-22 02:00:00     2     1     0
2014-11-22 03:00:00     3     1     0
2014-11-22 04:00:00     4     0     0
2014-11-22 05:00:00     5     0     0
2014-11-22 06:00:00     6     0     0
2014-11-22 07:00:00     7     0     0
2014-11-22 08:00:00     8     1     0
2014-11-22 09:00:00     9     0     0
2014-11-22 10:00:00     10    0     0
2014-11-22 11:00:00     11    1     0
2014-11-22 12:00:00     12    0     0
2014-11-22 13:00:00     13    0     0
2014-11-22 14:00:00     14    1     0
2014-11-22 15:00:00     15    0     0
2014-11-22 16:00:00     16    0     0
2014-11-22 17:00:00     17    0     0
2014-11-22 18:00:00     18    0     0
2014-11-22 19:00:00     19    1     0
2014-11-22 20:00:00     20    0     0
2014-11-22 21:00:00     21    0     0
2014-11-22 22:00:00     22    0     0
2014-11-22 23:00:00     23    1     0

我想将每小时的峰值数量聚合到“spike_count”列中(其中“小时”列是 24 小时格式的小时数)。所以我的预期输出将如下所示:

                      hour  spike  spike_count
date_time           
2014-11-22 00:00:00     0     0     0
2014-11-22 01:00:00     1     1     1
2014-11-22 02:00:00     2     1     2
2014-11-22 03:00:00     3     1     3
2014-11-22 04:00:00     4     0     0
2014-11-22 05:00:00     5     0     0
2014-11-22 06:00:00     6     0     0
2014-11-22 07:00:00     7     0     0
2014-11-22 08:00:00     8     1     4
2014-11-22 09:00:00     9     0     0
2014-11-22 10:00:00     10    0     0
2014-11-22 11:00:00     11    1     5
2014-11-22 12:00:00     12    0     0
2014-11-22 13:00:00     13    0     0
2014-11-22 14:00:00     14    1     6
2014-11-22 15:00:00     15    0     0
2014-11-22 16:00:00     16    0     0
2014-11-22 17:00:00     17    0     0
2014-11-22 18:00:00     18    0     0
2014-11-22 19:00:00     19    1     7
2014-11-22 20:00:00     20    0     0
2014-11-22 21:00:00     21    0     0
2014-11-22 22:00:00     22    0     0
2014-11-22 23:00:00     23    1     8

我不知道从哪里开始或如何解决这个问题。有什么建议吗?

最佳答案

使用cumsummask

df['spike_count'] = df.spike.cumsum().mask(df.spike.eq(0), 0)

                     hour  spike  spike_count
date_time                                    
2014-11-22 00:00:00     0      0            0
2014-11-22 01:00:00     1      1            1
2014-11-22 02:00:00     2      1            2
2014-11-22 03:00:00     3      1            3
2014-11-22 04:00:00     4      0            0
2014-11-22 05:00:00     5      0            0
2014-11-22 06:00:00     6      0            0
2014-11-22 07:00:00     7      0            0
2014-11-22 08:00:00     8      1            4
2014-11-22 09:00:00     9      0            0
2014-11-22 10:00:00    10      0            0
2014-11-22 11:00:00    11      1            5
2014-11-22 12:00:00    12      0            0
2014-11-22 13:00:00    13      0            0
2014-11-22 14:00:00    14      1            6
2014-11-22 15:00:00    15      0            0
2014-11-22 16:00:00    16      0            0
2014-11-22 17:00:00    17      0            0
2014-11-22 18:00:00    18      0            0
2014-11-22 19:00:00    19      1            7
2014-11-22 20:00:00    20      0            0
2014-11-22 21:00:00    21      0            0
2014-11-22 22:00:00    22      0            0
2014-11-22 23:00:00    23      1            8

关于python - 每小时汇总 pandas 计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57701260/

相关文章:

python - 如何在Python中将纬度/经度值转换为十进制?

python - 如何在 Pandas 中加载这种数据

python/elementtree xml解析成数组

python - 在 Python 3 中迭代单个字节

python - 在 yaml 文件中添加多个文档 | PyYAML

python - 与 Pandas 一起报道

python - Pandas groupby date month 并在几个月内计算项目

python - 使用for循环转换多列的数据类型

python - 设置 tkinter.ttk.Treeview 列中文本的格式

python - 如何获取使用模式找到的数据列表