Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 迭代时间序列_Python_For Loop_If Statement_Time_Jupyter - Fatal编程技术网

Python 迭代时间序列

Python 迭代时间序列,python,for-loop,if-statement,time,jupyter,Python,For Loop,If Statement,Time,Jupyter,以下是我的数据集示例: 索引时间速度 0 00:00:00 15 1 00:00:05 18 2 00:00:10 23 3 00:00:15 25 4 00:00:20 34 我想创建一个for循环,其功能与以下相同: 范围(0,5,1)内的i的: 如果测向速度[i]>测向速度[i+2]: 打印('大') 其他: 打印('较小') 然而,我想在FOR循环中指的是时间而不是索引。例如: 适用于

以下是我的数据集示例:

索引时间速度
0      00:00:00      15
1      00:00:05      18
2      00:00:10      23
3      00:00:15      25
4      00:00:20      34
我想创建一个for循环,其功能与以下相同:

范围(0,5,1)内的i的
:
如果测向速度[i]>测向速度[i+2]:
打印('大')
其他:
打印('较小')
然而,我想在FOR循环中指的是时间而不是索引。例如:

适用于范围内的t(00:00:00,00:00:20,5s):
如果测向速度[t]>测向速度[t+10s]:
打印('大')
其他:
打印('较小')
因此,FOR循环将获取某个t的速度值,并与10秒后的速度值进行比较。如果它较大,则打印较大,否则打印较小

谢谢你的帮助。谢谢。

日期范围(秒) 似乎您正在使用
熊猫
。如果是这样的话,你应该看看它的时间序列特征:

更具体地说,在
pandas.date\u range()

因为它是一个日期范围函数,所以它将返回datetimes

DatetimeIndex(['2019-03-06 00:00:00',
               '2019-03-06 00:00:05',
                ...,
               '2019-03-06 00:00:20'], dtype='datetime64[ns]', freq='5S')
从这里开始,只需使用
.strftime()
即可获得您想要的:

pd.date\u范围('00:00:00','00:00:20',freq='5s').strftime('%H:%M:%S')

返回

索引(['00:00:00','00:00:05',…,'00:00:20',dtype='object')


按时间访问数据帧 之后,为了使用此索引访问数据帧,您有两个选项:

  • 使用
    .loc
    查找此时间所在的行:
  • 通过使用
    set_index()
    重新定义数据帧索引,然后直接按时间访问它:

  • 编辑以解决评论问题 使用
    strftime()
    后,它将转换为字符串。您可以将其转换回添加10秒,如:

    df.speed[(pd.to_datetime(time)+pd.to_timedelta(10,unit='s')).strftime(“%H:%M:%s”)。

    或:


    谢谢你的回答。但是,对于if条件,我还想知道一点,即如何在时间上添加或删除秒数。例如:如果(df.speed[time]>df.speed[time+10]),或者它应该是(+00:00:10)还是(+10s')?
    DatetimeIndex(['2019-03-06 00:00:00',
                   '2019-03-06 00:00:05',
                    ...,
                   '2019-03-06 00:00:20'], dtype='datetime64[ns]', freq='5S')
    
    for time in pd.date_range('00:00:00', '00:00:20', freq='5s').strftime('%H:%M:%S'):
        if (df.loc[df['time'] == time, 'speed'] ..):
    
    df.set_index('time', inplace=True)
    for time in pd.date_range('00:00:00', '00:00:20', freq='5s').strftime('%H:%M:%S'):
        if (df.speed[time] ...):
    
    for time in pd.date_range('00:00:00', '00:00:20', freq='5s'):
        if (df.speed[time.strftime('%H:%M:%S')]>df.speed[(time + pd.to_timedelta(10, unit='s')).strftime('%H:%M:%S')]):