Python 如何使用Pandas从某个时间戳获取日期范围?

Python 如何使用Pandas从某个时间戳获取日期范围?,python,pandas,Python,Pandas,我需要将一年拆分为枚举的20分钟块,然后找到一年中随机分布的时间戳对应的时间范围块的序列号,以便进一步处理。 我尝试使用pandas来实现此目的,但找不到在date_范围内索引时间戳的方法: #!/usr/bin/python3 # -*- coding: utf-8 -*- import pandas as pd from datetime import timedelta if __name__ == '__main__': date_start = pd.to_datetim

我需要将一年拆分为枚举的20分钟块,然后找到一年中随机分布的时间戳对应的时间范围块的序列号,以便进一步处理。 我尝试使用pandas来实现此目的,但找不到在date_范围内索引时间戳的方法:

#!/usr/bin/python3
# -*- coding: utf-8 -*-

import pandas as pd
from datetime import timedelta


if __name__ == '__main__':
    date_start = pd.to_datetime('2018-01-01')
    date_end = date_start + timedelta(days=365)
    index = pd.date_range(start=date_start, end=date_end, freq='20min')
    data = range(len(index))
    df = pd.DataFrame(data, index=index, columns=['A'])
    print(df)

    event_ts = pd.to_datetime('2018-10-14 02:17:43')
    # How to find the corresponding df['A'] for event_ts?
    # print(df.loc[event_ts])

输出:

                         A
2018-01-01 00:00:00      0
2018-01-01 00:20:00      1
2018-01-01 00:40:00      2
2018-01-01 01:00:00      3
2018-01-01 01:20:00      4
...                    ...
2018-12-31 22:40:00  26276
2018-12-31 23:00:00  26277
2018-12-31 23:20:00  26278
2018-12-31 23:40:00  26279
2019-01-01 00:00:00  26280

[26281 rows x 1 columns]

在python中执行此操作的最佳实践是什么?我想象如何“手动”找到范围,将日期范围转换为整数并进行比较,但可能有一些优雅的pandas/python风格的方法可以做到这一点?

首先,我花了一个小的时间间隔,一周:

date_end = date_start + timedelta(days=7)
然后我按照你的步骤,得到了你的数据帧的一部分

我的活动是:

event_ts = pd.to_datetime('2018-01-04 02:17:43')
我选择了重置索引,并且有一个易于操作的数据框:

 df = df.reset_index()
使用此代码,我找到了事件所属的最后一个值:

 for i in df['index']:
      if i <= event_ts:
          run.append(i)

 print(max(run))
 #2018-01-04 02:00:00
 or:
 top = max(run)

事件属于索引df[222]

首先,我在一个小的时间间隔内工作了一周:

date_end = date_start + timedelta(days=7)
然后我按照你的步骤,得到了你的数据帧的一部分

我的活动是:

event_ts = pd.to_datetime('2018-01-04 02:17:43')
我选择了重置索引,并且有一个易于操作的数据框:

 df = df.reset_index()
使用此代码,我找到了事件所属的最后一个值:

 for i in df['index']:
      if i <= event_ts:
          run.append(i)

 print(max(run))
 #2018-01-04 02:00:00
 or:
 top = max(run)

事件属于索引df[222]

您介意分享一个吗?我不太清楚您的原始
df
@rpanai应该是什么,我在这里使用df仅用于存储时间范围块的索引。在我的任务中,我想列出一些进行处理的类的对象。我需要建立一个关系:事件时间戳->列表中对象的某个实例。我不确定DF是否可以存储类对象。事件处理需要一些额外的解决方法,比如从mysql中选择额外的数据等等。上课很方便。你介意和我一起上课吗?我不太清楚您的原始
df
@rpanai应该是什么,我在这里使用df仅用于存储时间范围块的索引。在我的任务中,我想列出一些进行处理的类的对象。我需要建立一个关系:事件时间戳->列表中对象的某个实例。我不确定DF是否可以存储类对象。事件处理需要一些额外的解决方法,比如从mysql中选择额外的数据等等。班级是不可分的。