Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.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_Time Series - Fatal编程技术网

在Python中查找符合趋势的数据帧中的值

在Python中查找符合趋势的数据帧中的值,python,pandas,time-series,Python,Pandas,Time Series,我有一个数据框,其中包含以下压缩机信息: 压缩器的数据帧: 我想知道每个压缩机的装载时间。可以通过在各个压缩器的ACTIVEPOWER列中找到最近值0之后出现的设定点(例如32000)并计算它们之间的行数(每行代表一分钟)来计算。如何在python中用pandas实现此操作 d1 = {'ACTIVEPOWER_1': [23000, 34000 , 45000, 0, 34000, 32000, 132000, 45000, 30000, 0, 32000, 132000]} df1 = p

我有一个数据框,其中包含以下压缩机信息:

压缩器的数据帧:

我想知道每个压缩机的装载时间。可以通过在各个压缩器的ACTIVEPOWER列中找到最近值0之后出现的设定点(例如32000)并计算它们之间的行数(每行代表一分钟)来计算。如何在python中用pandas实现此操作

d1 = {'ACTIVEPOWER_1': [23000, 34000 , 45000, 0, 34000, 32000, 132000, 45000, 30000, 0, 32000, 132000]}
df1 = pd.DataFrame(data=d1)
如果输入是上面的数据帧(df1),那么输出应该与下面给出的df2类似

d2 = {'Loading Times': [ 3, 2]}
df2 = pd.DataFrame(data=d2) 

如果我正确理解了您的问题,这应该可以:

import pandas as pd

d1 = {'ACTIVEPOWER_1': [23000, 34000 , 45000, 0, 34000, 32000,
                        132000, 45000, 30000, 0, 32000, 132000 , 0]}

df1 = pd.DataFrame(data=d1)

start = df1.loc[df1['ACTIVEPOWER_1']==0].index
end = df1.loc[df1['ACTIVEPOWER_1']==32000].index

res = pd.DataFrame({'Loading Times': [j-i+1 for i, j in zip(start, end)]})

#    Loading Times
# 0              3
# 1              2

欢迎来到SO。请花时间阅读:。特别是,请向我们展示您所需的输入输出。您能举一个您迄今为止尝试过的例子吗?@jpp我已经给出了一个输入和输出的示例。@Anne我在考虑过滤器,但似乎不知道如何实现此结果感谢一种方法。然而,我认为只有当0的数量等于设定点的数量时,这才有效。假设数据帧是[230003400045000,03400032001320004500300000],它将抛出一个错误。