让我们生成具有非恒定时间步长的时间序列的10行:
import pandas as pd
import numpy as np
x = pd.DataFrame(np.random.random(10),pd.date_range('1/1/2011', periods=5, freq='1min') \
.union(pd.date_range('1/2/2011', periods=5, freq='1min')))
数据示例:
2011-01-01 00:00:00 0.144852
2011-01-01 00:01:00 0.510248
2011-01-01 00:02:00 0.911903
2011-01-01 00:03:00 0.392504
2011-01-01 00:04:00 0.054307
2011-01-02 00:00:00 0.918862
2011-01-02 00:01:00 0.988054
2011-01-02 00:02:00 0.780668
2011-01-02 00:03:00 0.831947
2011-01-02 00:04:00 0.707357
现在让我们定义r
为所谓的“返回”(连续行之间的差异):
r = x[1:] - x[:-1].values
如何通过删除r[i]
时差不是1分钟的来清理数据?(这里有整整一行r
要清洗)
IIUC我认为您需要以下内容:
In [26]:
x[(x.index.to_series().diff() == pd.Timedelta(1, 'm')) | (x.index.to_series().diff().isnull())]
Out[26]:
0
2011-01-01 00:00:00 0.367675
2011-01-01 00:01:00 0.128325
2011-01-01 00:02:00 0.772191
2011-01-01 00:03:00 0.638847
2011-01-01 00:04:00 0.476668
2011-01-02 00:01:00 0.992888
2011-01-02 00:02:00 0.944810
2011-01-02 00:03:00 0.171831
2011-01-02 00:04:00 0.316064
这会将索引转换为使用,to_series
因此我们可以调用diff
,然后可以将其与1分钟的timedelta进行比较,我们还处理diff
将返回的第一行情况NaT
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句