Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 效率:检查数据帧中的值是否随特定阈值发生了更改_Python_Pandas_Dataframe - Fatal编程技术网

Python 效率:检查数据帧中的值是否随特定阈值发生了更改

Python 效率:检查数据帧中的值是否随特定阈值发生了更改,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个传感器记录的专栏 此数据有一些杂音,因此在未检测到任何内容的情况下,每个时间点的值并不完全相同。 我想将记录的数据帧拆分为只包含“有趣”数据的新数据帧(值大于列“B”的某个阈值,在本例中大于5)在本例中,“A”表示时间戳,“B”表示传感器数据,带有噪声。本例的预期结果是两个数据帧。一个具有从5到6的行,另一个具有从10到12的行数据帧上的正常循环非常耗时,因为数据帧有约2400万行。在熊猫或类似动物身上,有没有有效的方法来处理这样的问题 编辑: 例如: # | A | B -

我有一个传感器记录的专栏
此数据有一些杂音,因此在未检测到任何内容的情况下,每个时间点的值并不完全相同。
我想将记录的数据帧拆分为只包含“有趣”数据的新数据帧(值大于列“B”的某个阈值,在本例中大于5)
在本例中,“A”表示时间戳,“B”表示传感器数据,带有噪声。
本例的预期结果是两个数据帧。一个具有从5到6的行,另一个具有从10到12的行

数据帧上的正常循环非常耗时,因为数据帧有约2400万行。在熊猫或类似动物身上,有没有有效的方法来处理这样的问题

编辑:

例如:


# |  A  |  B  
--+-----+-----
1 |  1  |  0.10
2 |  2  |  0.11
3 |  3  |  0.09
4 |  4  |  0.12
5 |  5  |  5.24
6 |  6  |  6.33
7 |  7  |  0.08
8 |  8  |  0.09
9 |  9  |  0.10
10|  10 |  7.54
11|  11 |  8.33
12|  12 |  9.03
13|  13 |  0.43
下面是一个例子:

thresh = 5
s = df['B'].lt(thresh)

for k, v in (df.assign(c=s.cumsum())
               .loc[~s]
               .groupby('c')
            ):
    print(v)
输出:

   A     B  c
#            
5  5  5.24  4
6  6  6.33  4
     A     B  c
#              
10  10  7.54  7
11  11  8.33  7
12  12  9.03  7
   A     B
#         
5  5  5.24
6  6  6.33
     A     B
#           
10  10  7.54
11  11  8.33
12  12  9.03
选项2

for k, v in df.loc[~s].groupby(s.cumsum()):
    print(v)
输出:

   A     B  c
#            
5  5  5.24  4
6  6  6.33  4
     A     B  c
#              
10  10  7.54  7
11  11  8.33  7
12  12  9.03  7
   A     B
#         
5  5  5.24
6  6  6.33
     A     B
#           
10  10  7.54
11  11  8.33
12  12  9.03
下面是一个例子:

thresh = 5
s = df['B'].lt(thresh)

for k, v in (df.assign(c=s.cumsum())
               .loc[~s]
               .groupby('c')
            ):
    print(v)
输出:

   A     B  c
#            
5  5  5.24  4
6  6  6.33  4
     A     B  c
#              
10  10  7.54  7
11  11  8.33  7
12  12  9.03  7
   A     B
#         
5  5  5.24
6  6  6.33
     A     B
#           
10  10  7.54
11  11  8.33
12  12  9.03
选项2

for k, v in df.loc[~s].groupby(s.cumsum()):
    print(v)
输出:

   A     B  c
#            
5  5  5.24  4
6  6  6.33  4
     A     B  c
#              
10  10  7.54  7
11  11  8.33  7
12  12  9.03  7
   A     B
#         
5  5  5.24
6  6  6.33
     A     B
#           
10  10  7.54
11  11  8.33
12  12  9.03

请更准确地说明你想要的结果;在值大于5的连续行中分离数据名?或者数据帧,其中行“b”值介于5和7之间,另一个数据帧用于值介于7和10之间的行?@Chrisvdberge:我希望每次测量期间发生“操作”时都有单独的数据帧。所以传感器基本上被激活了。。。几分钟后(数千行),第一个操作发生约1分钟。在该“操作”期间,“B”的值可以得到任何值。动作结束后,再休息几分钟。比下一个动作发生约1min,比断、动作、断等。我希望每个动作都有单独的数据帧。下面答案的问题是,阈值也会过滤掉事件期间发生的阈值以下的值。。。我希望这个描述能让事情更清楚。谢谢你的关注@克瑞斯夫德伯格:我刚刚为这个问题提出了一个新问题:请更准确地说明你想要的结果;在值大于5的连续行中分离数据名?或者数据帧,其中行“b”值介于5和7之间,另一个数据帧用于值介于7和10之间的行?@Chrisvdberge:我希望每次测量期间发生“操作”时都有单独的数据帧。所以传感器基本上被激活了。。。几分钟后(数千行),第一个操作发生约1分钟。在该“操作”期间,“B”的值可以得到任何值。动作结束后,再休息几分钟。比下一个动作发生约1min,比断、动作、断等。我希望每个动作都有单独的数据帧。下面答案的问题是,阈值也会过滤掉事件期间发生的阈值以下的值。。。我希望这个描述能让事情更清楚。谢谢你的关注@克瑞斯夫德伯格:我刚刚为这个问题提出了一个新问题:谢谢你的快速回答!这完全解决了我提出的问题,非常好!然而,我发现我的问题表述错误。在“有趣的间隔”之间,可能会出现值再次降为零的情况,但由于“df2=df[df.B>thresh]”,这些值现在被删除。你有解决办法吗?谢谢:)PS:我编辑了原始示例我刚刚接受了你的答案,并将写一个新问题,因为你是对的:)谢谢!谢谢你的快速回答!这完全解决了我提出的问题,非常好!然而,我发现我的问题表述错误。在“有趣的间隔”之间,可能会出现值再次降为零的情况,但由于“df2=df[df.B>thresh]”,这些值现在被删除。你有解决办法吗?谢谢:)PS:我编辑了原始示例我刚刚接受了你的答案,并将写一个新问题,因为你是对的:)谢谢!