查找Pandas Datafram中所有模式的索引

2024-04-19 05:06:29 发布

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

我使用的是由datetimes索引的Pandas数据帧,如下所示:

TimeSys_Index
2014-08-29 00:00:18    0
2014-08-29 00:00:19    0
2014-08-29 00:00:20    1
2014-08-29 00:00:21    1
2014-08-29 00:00:22    0
2014-08-29 00:00:23    0
2014-08-29 00:00:24    0
2014-08-29 00:00:25    0
2014-08-29 00:00:26    0
2014-08-29 00:00:27    1
2014-08-29 00:00:28    1
2014-08-29 00:00:29    1
2014-08-29 00:00:30    1
2014-08-29 00:00:31    0
2014-08-29 00:00:32    0
2014-08-29 00:00:33    0
...

我想找到模式[0,0,1,1]每次出现的索引(时间)。使用上面的序列,我希望它返回['2014-08-29 00:00:18','2014-08-29 00:00:25']。关键是这需要矢量化,或者至少非常快。在

我在想运行一个全向量与模式向量的关联,然后找到结果向量等于4的索引,但是有一个更简单的方法。在


Tags: 数据方法pandasindex时间模式序列向量
1条回答
网友
1楼 · 发布于 2024-04-19 05:06:29

您可以查看移位的值:

>>> df.head()
                     val
TimeSys_Index           
2014-08-29 00:00:18    0
2014-08-29 00:00:19    0
2014-08-29 00:00:20    1
2014-08-29 00:00:21    1
2014-08-29 00:00:22    0
>>> i = (df['val'] == 0) & (df['val'].shift(-1) == 0)
>>> i &= (df['val'].shift(-2) == 1) & (df['val'].shift(-3) == 1)
>>> df.index[i]
<class 'pandas.tseries.index.DatetimeIndex'>
[2014-08-29 00:00:18, 2014-08-29 00:00:25]
Length: 2, Freq: None, Timezone: None

相关问题 更多 >