簡體   English   中英

如何使用 Pandas 從某個時間戳獲取 date_range?

[英]How to use Pandas to get date_range from some timestamp?

我需要將一年拆分為枚舉的 20 分鍾塊,然后為一年中隨機分布的時間戳找到相應時間范圍塊的序列號以進行進一步處理。 我嘗試為此使用 pandas,但我找不到在 date_range 中索引時間戳的方法:

#!/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])

Output:

                         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 中執行此操作的最佳做法是什么? 我想如何“手動”找到將 date_range 轉換為整數並進行比較的范圍,但可能有一些優雅的 pandas/python 風格的方法可以做到這一點?

首先,我的工作間隔很小,一周:

date_end = date_start + timedelta(days=7)

然后我按照你的步驟,得到了你的 dataframe 的一部分。

我的 event_ts 是這樣的:

event_ts = pd.to_datetime('2018-01-04 02:17:43')

而且我選擇了重置索引,並擁有一個易於操作的 dataframe:

 df = df.reset_index()

使用此代碼,我找到了 event_ts 所屬的最后一個值:

 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.loc[df['index'] == top].index[0]
 222

event_ts 屬於索引 df[222]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM