【发布时间】:2021-09-25 23:27:52
【问题描述】:
我有一个带有日期时间索引的 pandas 数据框以及多列 1 和 0。我希望将那些 1 和 0 聚集在一起,以找出一个序列中有多少个。然后,我希望使用日期时间索引来确定每列中团块的最小、平均和最大时间。我只需要计算 1,因为在这种情况下,它们本质上是“开启”值。如果只有一个 1,那么从那个 1 到下一行的时间就是时间范围。
到目前为止,我已经从这篇帖子 Counting cons values and adding them 看到了第一部分以这种方式完成的
y * (y.groupby((y != y.shift()).cumsum()).cumcount() + 1)
索引为“年-月-日时:分:秒”
Dataframe 的一个例子如下。
col1 col2
datetime
2021-05-24 00:09:22 1 0
2021-05-24 00:09:24 1 0
2021-05-24 00:09:25 0 1
2021-05-24 00:09:26 1 0
2021-05-24 00:09:27 0 0
在几秒钟或几分钟内为一列提供这样的所需输出。输出必须使用日期时间索引,而不是仅仅计算连续值并乘以时间,因为日期时间不一致。
col1 col2
min 1 1
max 3 1
mean 2 1
【问题讨论】:
-
您能解释一下您的预期输出吗?我明白为什么 max 是 2 秒,但是你如何计算一个只包含一行的块的时间?您是否考虑 0 的运行和 1 的运行?也许您可以稍微扩展示例数据框以使其更清晰,并为 col2 提供预期的输出。
-
刚刚添加了附加信息,希望足以解决信息不足的问题。
标签: python pandas time-series