gpt4 book ai didi

python - 过滤具有 0 和 1 序列的列中的行模式

转载 作者:行者123 更新时间:2023-12-01 04:59:49 24 4
gpt4 key购买 nike

我正在寻找一种方法来过滤/搜索数据框中行中的序列/模式,如下所示:

sensor               A  B  C  D  E  F
date
2011-11-02 19:22:32 0 0 0 0 1 0
2011-11-02 19:29:18 0 0 0 0 1 0
2011-11-02 19:29:30 0 0 1 0 1 0
2011-11-02 19:29:34 0 0 1 1 1 0
2011-11-02 19:29:35 0 0 1 1 0 0
2011-11-02 19:30:06 0 0 1 0 0 0
2011-11-02 19:30:10 0 0 1 0 1 0
2011-11-02 19:30:46 0 0 0 0 1 0
2011-11-02 19:31:25 0 0 1 0 1 0
2011-11-02 19:31:26 0 0 1 0 0 0
2011-11-02 19:31:31 0 0 1 1 0 0
2011-11-02 19:31:41 0 0 0 1 0 0

我现在需要知道传感器(A、B、C、..)在哪些时间范围内处于事件状态(值 == 1)。例如。对于传感器 C 有两个间隔:

  1. 开始:2011-11-02 19:29:30,结束:2011-11-02 19:30:46
  2. 开始:2011-11-02 19:31:25,结束:2011-11-02 19:31:41

所以:0 -> 1:开始日期和1 -> 0:结束日期

我的第一个解决方案是迭代行。但由于真实的数据集相当大,我想知道是否有任何方法可以用 pandas 来完成此操作。

谢谢。

最佳答案

res = {}
t = df - df.shift(1)
for col in df.columns:
res[col] = t[col][t[col] != 0]

当特定列的值为 1 时,表示时间范围已开始,为 -1 时表示时间范围结束

此外,您可以使用字典理解来代替:

res = {col: t[col][t[col] != 0] for col in df.columns}

关于python - 过滤具有 0 和 1 序列的列中的行模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26511109/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com