DataFrame移除时间戳间隔小于5秒数据行报错求助
处理DataFrame中时间戳过近的过采样问题
问题描述
数据集内大量数据点时间戳过于接近,引发过采样问题。需要对DataFrame进行处理:保留每个时间戳区间的首行,删除该首行时间戳前后5秒范围内的所有后续行,最终确保任意两行的时间戳间隔不小于5秒。
现有代码
test_df = test_df.sort_values(by='timestamp').reset_index(drop=True) for i in range(0, len(test_df)): currentTimestamp = test_df.timestamp.loc[i] temp_row = test_df.loc[i] temp_5_secs = add_ms(currentTimestamp, 5000) test_df = test_df[(test_df.timestamp) >= temp_5_secs].reset_index(drop=True) test_df = test_df.append(temp_row, ignore_index=True) test_df = test_df.sort_values(by='timestamp').reset_index(drop=True) def add_ms(timestamp, ms): return int(timestamp) + 1000000* ms
报错信息
ValueError Traceback (most recent call last) /local/home/python3.7/site-packages/pandas/core/indexes/range.py in get_loc(self, key, method, tolerance) 354 try: --> 355 return self._range.index(new_key) 356 except ValueError as err: ValueError: 235 is not in range
示例DataFrame
index timestamp value 0 1675434673166538783 14.62 1 1675434684419325010 14.62 2 1675434684420505291 14.62 3 1675434673164456809 14.63 4 1675434700772654637 14.50
错误原因
原代码在循环中持续修改并重置test_df的索引,而循环的i值基于初始DataFrame的长度。当test_df被过滤变短后,后续的i值会超出新DataFrame的索引范围,触发ValueError。
解决方案
采用指针遍历筛选的方式,避免在循环中修改原DataFrame,确保索引始终有效:
import pandas as pd # 1. 先按时间戳排序,重置索引 test_df = test_df.sort_values(by='timestamp').reset_index(drop=True) # 2. 初始化保留的索引和最后一个保留的时间戳 keep_indices = [0] last_kept_ts = test_df['timestamp'].iloc[0] # 3. 定义5秒对应的纳秒数(匹配原代码的时间戳单位逻辑) FIVE_SECONDS_NS = 5 * 10**9 # 4. 遍历后续行,筛选符合间隔要求的数据 for i in range(1, len(test_df)): current_ts = test_df['timestamp'].iloc[i] if current_ts - last_kept_ts >= FIVE_SECONDS_NS: keep_indices.append(i) last_kept_ts = current_ts # 5. 生成最终筛选后的DataFrame filtered_df = test_df.loc[keep_indices].reset_index(drop=True)
代码说明
- 先对时间戳排序,保证遍历顺序正确
- 维护一个保留索引列表,仅当当前行时间戳与最后一个保留行的时间戳差≥5秒时,才将其加入列表
- 最后通过保留索引筛选数据,避免循环中修改原DataFrame导致的索引异常
示例处理结果
对提供的示例DataFrame处理后,得到的结果如下:
timestamp value 1675434673164456809 14.63 1675434684419325010 14.62 1675434700772654637 14.50
内容的提问来源于stack exchange,提问作者Bag
相关产品推荐
相关产品推荐

