根据另一列中的值范围确定行索引

时间:2018-07-31 16:26:38

标签: python pandas dataframe

我有一个包含一些数据的数据框。

  • 一列“ DateTime” 具有日期和时间(已经使用命令pd.to_datetime(...)格式化为日期和时间。
  • 另一列“当前” 中记录了几天内的值。

开始时,“当前”列中的数据从接近(-5、0,+ 5)的较小值变为已知范围内的值(例如-360至-380之间)。这一直持续到我不再消耗电流为止。然后,值再次接近0。

我基本上是在尝试扫描数据帧,并确定第一行和最后一行的值在-360和-380之间。然后,我想使用行索引并计算它们之间的时间间隔。

我的特定问题是找到正确的命令和语法以正确识别这两行。有什么线索吗?

这是一个基本的数据框来说明。基本上,我正在寻找第3行和第5行的索引。一旦有了这些行,就可以将其存储在变量中,然后计算公式(5-3)。 (很抱歉,我真的不知道如何格式化结果,但是下面的代码...)

df = pd.DataFrame([[1, 2], [2, 3], [3, 6],[4,370],[5,370],[6,370],[7,-5],[8,2]], columns=['A', 'B'])

Ind A B
0 1 2 
1 2 3 
2 3 6 
3 4 370 
4 5 370 
5 6 370 
6 7 -5 
7 8 2

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您尝试过吗:

col = 'current'
minVal = -380
maxVal = -360
begin = df.loc[np.logical_and(df[col]<maxVal, df[col]>minVal)].index[0]
end = df.loc[np.logical_and(df[col]<maxVal, df[col]>minVal)].index[-1]

它的基本作用是选择给定范围内的所有值,并获得最小索引和最大索引。请注意,嘈杂的数据点可能会引起问题。