在pandas dataframe中查找与特定范围匹配的行范围开始的索引

jm2pwxwz  于 2023-05-21  发布在  其他
关注(0)|答案(1)|浏览(167)

python noob在这里试图删除满足某些条件的数据集中的行集。行集合在给定时间戳范围内以块的形式存在,但是可以在有效数据的完整时间轴上出现任何次数。
为了跟踪感兴趣的事件发生的位置,我创建了一个额外的列“Moved”,根据应用于列Value的公式来指示感兴趣的行,并使用了pd.loc[(criteria),'Moved']= 1,0,-1的赋值运算符;
何处
移动= 1(标称数据,可能在不良数据集内。我想数一下那些不在坏范围内的),
移动= 0(标称数据),
移动= -1(坏数据至少从现在开始,但最多在100行之前,并且在接下来的几天(数据周期为4s))。
我创建了一个循环,从下一个Moved = -1索引开始删除一个 Dataframe 块,直到下一个100个“Moved”值的总和=0,我停止删除索引。然后我再次搜索-1索引开始。这需要很长时间,然后一旦超出范围的值用完,我就会得到一个索引错误。如果发现Moved =-1,算法将重新启动循环并丢弃下一个数据块。
我实现的伪代码如下:

while pd.Moved.loc[pd.Moved == -1].count() > 0:
   good_index = ** find the next index where 100 consecutive "Moved" rows == 0 **
   pd.drop(pd[(pd.index >= pd.Moved.loc[pd.Moved == -1].index[0])][:rows_to_delete].index, inplace=True
指数价值感动
时间x删除-100行以确保0
时间1错误数据启动-1
时间xxxx0
时间xxxx0
时间xxxx1
时间xxxx0
时间xxxx0
时间xxxx0 -> 100行0值表示我想停止删除行
......这是什么?良好数据>-1
时间2错误数据再次启动-1
时间yxxx1
时间yxxx0
时间yxxx0
时间xxxx0 -> 100行0,坏数据完成
......这是什么?良好数据>-1
3bygqnnd

3bygqnnd1#

这只是使用pandas.rolling(“1H”).max()函数来评估数据是否在一段时间内超出范围,然后删除该数据中的任何内容。

相关问题