在Python中查找符合趋势的数据帧中的值
我有一个数据框,其中包含以下压缩机信息: 压缩器的数据帧: 我想知道每个压缩机的装载时间。可以通过在各个压缩器的ACTIVEPOWER列中找到最近值0之后出现的设定点(例如32000)并计算它们之间的行数(每行代表一分钟)来计算。如何在python中用pandas实现此操作在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
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],它将抛出一个错误。