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 |
时间x | xxx | 0 |
时间x | xxx | 0 |
时间x | xxx | 1 |
时间x | xxx | 0 |
时间x | xxx | 0 |
时间x | xxx | 0 -> 100行0值表示我想停止删除行 |
......这是什么? | 良好数据 | >-1 |
时间2 | 错误数据再次启动 | -1 |
时间y | xxx | 1 |
时间y | xxx | 0 |
时间y | xxx | 0 |
时间x | xxx | 0 -> 100行0,坏数据完成 |
......这是什么? | 良好数据 | >-1 |
1条答案
按热度按时间3bygqnnd1#
这只是使用pandas.rolling(“1H”).max()函数来评估数据是否在一段时间内超出范围,然后删除该数据中的任何内容。