當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python Pandas date_range方法用法及代碼示例


Pandas date_range(~) 方法返回固定頻率的 DatetimeIndex

參數

1.start | stringdatetime-like | optional

範圍的下限(含)。

2. end | stringdatetime-like | optional

範圍的上限(含)。

3. periods | int | optional

所需的日期數量。默認情況下,periods=True

警告

在上述三個參數中,必須指定兩個 - 不能少,不能多。

4. freq | stringDateOffset | optional

一對連續日期之間的step-size(間隔)。默認情況下,freq="D"(一天的step-size)。

5. tz | strtzinfo | optional

日期的時區。默認情況下,date-times 很幼稚,沒有任何時區的概念。

6. normalize | boolean | optional

是否將日期的時間單位設置為午夜。默認情況下,normalize=False

7. name | string | optional

生成的 DatetimeIndex 的名稱。默認情況下,name=None

8. closed | Nonestring | optional

是否使邊界( startend )包含/排除:

說明

"left"

  • 下限變得包含在內。

  • 上限變得唯一。

"right"

  • 下限變得排他。

  • 上限變得包含在內。

None

兩個界限都包含在內。

默認情況下,closed=None

返回值

一個 DatetimeIndex

例子

基本用法

要創建從 2020-12-252020-12-27(包括兩者)的日期序列:

pd.date_range(start="2020-12-25", end="2020-12-27")



DatetimeIndex(['2020-12-25', '2020-12-26', '2020-12-27'], dtype='datetime64[ns]', freq='D')

默認的step-size(頻率)是一天,因此這就是我們在輸出中看到freq="D"的原因。

您還可以將 datetime 類似對象用於 startend

import datetime
datetime_tomorrow = datetime.date.today() + datetime.timedelta(days=1)
pd.date_range(start=datetime.date.today(), end=datetime_tomorrow)



DatetimeIndex(['2020-09-02', '2020-09-03'], dtype='datetime64[ns]', freq='D')

指定期間

要從 2020-12-25(含)創建長度為 3 的日期序列:

pd.date_range(start="2020-12-25", periods=3)



DatetimeIndex(['2020-12-25', '2020-12-26', '2020-12-27'], dtype='datetime64[ns]', freq='D')

指定頻率

頻率可以被認為是step-size。默認頻率為1日:

pd.date_range(start="2020-12-25", periods=3)   # freq="D"



DatetimeIndex(['2020-12-25', '2020-12-26', '2020-12-27'], dtype='datetime64[ns]', freq='D')

讓我們嘗試 2 天的間隔:

pd.date_range(start="2020-12-25", periods=3, freq="2D")



DatetimeIndex(['2020-12-25', '2020-12-27', '2020-12-29'], dtype='datetime64[ns]', freq='2D')

現在讓我們嘗試 1 個月的間隔:

pd.date_range(start="2020-12-25", periods=3, freq="M")



DatetimeIndex(['2020-12-31', '2021-01-31', '2021-02-28'], dtype='datetime64[ns]', freq='M')

如果頻率設置為月,則 start 參數的日單位變得無關緊要 - 日將始終設置為月底。

指定時區

我們可以使用 tz 參數顯式指定時區,而不是不知道時區的默認日期:

pd.date_range(start="2020-12-25", periods=3, tz="Europe/Paris")



DatetimeIndex(['2020-12-25 00:00:00+01:00',
               '2020-12-26 00:00:00+01:00',
               '2020-12-27 00:00:00+01:00'],
               dtype='datetime64[ns, Europe/Paris]', freq='D')

請注意我們如何將 +01:00 附加到日期時間,這表示 +1 小時的 UTC 偏移量。

標準化日期

默認情況下,如果您指定一個時間單位,該方法將遵循時間單位(例如一天中的小時):

pd.date_range(start="2020-12-25 05:15:20", periods=3)



DatetimeIndex(['2020-12-25 05:15:20',
               '2020-12-26 05:15:20',
               '2020-12-27 05:15:20'],
               dtype='datetime64[ns]', freq='D')

我們可以通過設置 normalize=True 將日期時間設置為午夜:

pd.date_range(start="2020-12-25 05:15:20", periods=3, normalize=True)



DatetimeIndex(['2020-12-25', '2020-12-26', '2020-12-27'], dtype='datetime64[ns]', freq='D')

指定名稱

為生成的 DatetimeIndex 命名:

pd.date_range(start="2020-12-25", periods=2, name="My Dates")



DatetimeIndex(['2020-12-25', '2020-12-26'], dtype='datetime64[ns]', name='My Dates', freq='D')

請注意我們如何將 name="My Dates" 編碼到 DatetimeIndex 中。

指定收盤價

默認情況下, closed=None ,這意味著下限和上限都包含在內:

pd.date_range(start="2020-12-25", end="2020-12-27")



DatetimeIndex(['2020-12-25', '2020-12-26', '2020-12-27'], dtype='datetime64[ns]', freq='D')

要使下限包含在內且上限不包含,請設置 closed="left"

pd.date_range(start="2020-12-25", end="2020-12-27", closed="left")



DatetimeIndex(['2020-12-25', '2020-12-26'], dtype='datetime64[ns]', freq='D')

要使下限不包含且上限包含,請設置 closed="right"

pd.date_range(start="2020-12-25", end="2020-12-27", closed="right")



DatetimeIndex(['2020-12-26', '2020-12-27'], dtype='datetime64[ns]', freq='D')

使用 DatetimeIndex 創建 DataFrame

date_range(~) 方法可用於用 DatetimeIndex 初始化 DataFrame,如下所示:

index_date = pd.date_range("2020-12-25", periods=4, freq="3H")
df = pd.DataFrame({"A":["a","b","c","d"]}, index=index_date)
df



                     A
2020-12-25 00:00:00  a
2020-12-25 03:00:00  b
2020-12-25 06:00:00  c
2020-12-25 09:00:00  d

相關用法


注:本文由純淨天空篩選整理自Isshin Inada大神的英文原創作品 Pandas | date_range method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。