我有一个数据帧,包括每个随机时间间隔(从1到50秒)的路线坐标和时间戳,如this数据帧样本中所示。我正在寻找一种方法来修剪数据集,以便只保持时间差大于或等于30秒。
例如,如果索引的时间戳如下所示:
Idealy我想只保留:
事件提示会有所帮助!
谢谢!
答案 0 :(得分:2)
考虑数据框df
from pandas import Timestamp
df = pd.DataFrame({
'date': [Timestamp('2017-03-27 06:52:30'),
Timestamp('2017-03-27 06:52:32'),
Timestamp('2017-03-27 06:52:45'),
Timestamp('2017-03-27 06:52:59'),
Timestamp('2017-03-27 06:53:02'),
Timestamp('2017-03-27 06:53:32')]
})
我使用生成器筛选并确定增量时间何时超过某个阈值并返回索引。
def f(s, thresh):
cur = None
for i, v in s.iteritems():
if (cur is None) or (v - cur >= thresh):
yield i
cur = v
df.loc[list(f(df.date, pd.to_timedelta(30, 's')))]
date
0 2017-03-27 06:52:30
4 2017-03-27 06:53:02
5 2017-03-27 06:53:32
答案 1 :(得分:0)
由于您尚未提供数据框,因此我们假设您的列名为time
。
你可以这样做:df.time.shift(1) - df.time
。这将为您提供一系列差异。现在,您可以使用索引,现在使用新列来过滤time
列。
此帖子here不重复,但可用于此shift
方法的应用。
这是我如何接近它的一个重要提示。希望它有所帮助!
P.S。请提供完整的数据框以供将来参考,以便可以清楚地看到代码并将其作为回复引用。