Pandas在时间序列中以小于x的观测值丢弃行

2024-04-19 11:01:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Pandas中的timeseries数据(时间戳用作索引)。我对我的数据集进行了一些过滤,最终得到了一个数据帧,其中大部分包含连续的观察结果(一分钟的数据)。然而,也有只有一分钟或几分钟观察的时间间隔。我想把这些排除在外。我怎样才能通过以下方式掌握这些短时间间隔:

df = df.drop(df[<some boolean condition>].index)
timestamp               value     
2018-01-08 06:13:00     143
2018-01-08 06:14:00     324
2018-01-08 06:15:00     324
2018-01-08 06:16:00     324
2018-01-08 06:17:00     324
2018-01-08 06:20:00     324(remove)
2018-01-08 06:35:00     324
2018-01-08 06:36:00     324
2018-01-08 06:37:00     324
2018-01-08 06:38:00     324
2018-01-08 06:39:00     324
2018-01-08 06:40:00     324

Tags: 数据pandasdfindex间隔value方式时间
1条回答
网友
1楼 · 发布于 2024-04-19 11:01:23

使用:

#convert index to Series
s = df.index.to_series()
#test if 1 Minute difference, then cumulative sum
a = s.diff().ne(pd.Timedelta(1, unit='Min')).cumsum()

#filter if counts of cumulative value greater like N, e.g. 3
N = 3
df = df[a.map(a.value_counts()).gt(N)]
print (df)
                     value
timestamp                 
2018-01-08 06:13:00    143
2018-01-08 06:14:00    324
2018-01-08 06:15:00    324
2018-01-08 06:16:00    324
2018-01-08 06:17:00    324
2018-01-08 06:35:00    324
2018-01-08 06:36:00    324
2018-01-08 06:37:00    324
2018-01-08 06:38:00    324
2018-01-08 06:39:00    324
2018-01-08 06:40:00    324

相关问题 更多 >