在Python中的Dataframe中查找遵循趋势的值

时间:2018-03-06 08:35:23

标签: python pandas time-series

我有一个数据框,其中包含压缩器的信息,如下所示:

压缩机的数据框:

enter image description here

我想知道每个压缩机的加载时间。可以通过在相应压缩器的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) 

1 个答案:

答案 0 :(得分:1)

如果我理解你的问题,这应该有效:

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