Pandas DatetimeIndex
構造函數創建一個新的 DatetimeIndex
對象,該對象最常用作 DataFrame 的索引。
警告
選擇使用 pd.date_range(~)
方法來初始化DatetimeIndex
,而不是直接使用此構造函數。 date_range(~)
提供了更大的靈活性,並且在官方文檔中使用更廣泛。
參數
1.data
| 1D array-like
| optional
用於構造 DatetimeIndex
的類似數組。
2. freq
| string
| optional
DatetimeIndex
的頻率。默認情況下,freq=None
。
3. tz
| pytz.timezone
或 dateutil.tz.tzfile
或 datetime.tzinfo
或 string
| optional
DatetimeIndex
的時區。默認情況下,生成的 DatetimeIndex
很幼稚,因為它沒有時區的概念。
4. normalize
| boolean
| optional
是否將日期的時間單位設置為午夜。默認情況下,normalize=False
。
警告
設置這個參數好像沒有什麽效果。如果您遇到同樣的問題,請改用 date_range(~)
的 normalize
。
5. closed
| None
或 string
| optional
是否使邊界包含/排除:
值 |
說明 |
---|---|
|
|
|
|
|
兩個界限都變得具有包容性。 |
默認情況下,closed=None
。
6. ambiguous
| string
或 array<boolean>
| optional
僅當您指定時區 (tz
) 時,此參數才相關。由於夏令時 (DST) 引起的時間調整,時間可能會出現歧義。例如,考慮以下情況:
Local time:
01:59:58
01:59:59
01:00:00 # DST ends and so we set the wall clock back 1 hour
01:00:01
...
01:59:58 # This local time occured for the second time
...
如果您嘗試本地化發生兩次的時間(例如 01:59:58
),那麽 Pandas 會很困惑您指的是哪個時間 - 第一次(DST)還是第二次(非 DST)?
Pandas 可以通過以下方式之一處理這種歧義:
值 |
說明 |
---|---|
|
根據提供的時間順序推斷 DST 轉換。 |
|
布爾數組(例如列表、Numpy 數組),其中:
|
|
不明確的時間將轉換為 |
|
模棱兩可的時候會引發錯誤。 |
默認情況下,ambiguous="raise"
。
7. dayfirst
| boolean
| optional
如果 True
,則將第一個數字視為一天。例如, "10/12/2020"
將被解析為 2020 年 12 月 10 日。默認情況下, dayfirst=False
。
8. yearfirst
| boolean
| optional
如果 True
,則將第一個數字視為年份。例如, "20/12/10"
將被解析為 2020 年 12 月 10 日。默認情況下, yearfirst=False
。
9. dtype
| string
或 numpy.dtype
或 DatetimeTZDtype
| optional
允許的 dtype
是 'datetime64[ns]'
。您可以使用 dtype
嵌入時區,而不是指定 tz
,如下所示:
dtype="datetime64[ns, Europe/Paris]"
10.copy
| boolean
| optional
-
如果
True
,則將返回data
的新副本 - 修改此複製的數據不會影響原始數據,反之亦然。 -
如果是
False
,則將返回對data
的引用 - 修改返回值將改變原始數據,反之亦然。
默認情況下,copy=False
。
11.name
| string
| optional
分配給生成的 DatetimeIndex
的名稱。默認情況下,name=None
。
返回值
DatetimeIndex
對象。
例子
基本用法
要使用日期字符串列表創建DatetimeIndex
:
idx = pd.DatetimeIndex(["2020-12-25","2020-12-26"])
idx
DatetimeIndex(['2020-12-25', '2020-12-26'], dtype='datetime64[ns]', freq=None)
我們可以用它來初始化 DataFrame 和 DatetimeIndex
:
df = pd.DataFrame({"A":["a","b"]}, index=idx)
df
A
2020-12-25 a
2020-12-26 b
指定時區
要指定時區,請設置tz
,如下所示:
pd.DatetimeIndex(["2020-12-25","2020-12-26"], tz="Asia/Tokyo")
DatetimeIndex(['2020-12-25 00:00:00+09:00', '2020-12-26 00:00:00+09:00'], dtype='datetime64[ns, Asia/Tokyo]', freq=None)
這裏,附加的+09:00
表示東京的標準時間比UTC早9個小時。
處理曖昧時期
2019-10-27 3AM
(中歐時間),DST 結束,這意味著掛鍾向後撥回一小時。因此,我們這裏有一個不明確的情況,其中像 2019-10-27 02:30:00
這樣的本地時間出現了兩次。
增加
默認情況下, ambiguous="raise"
,這意味著如果日期不明確,則會引發錯誤:
pd.DatetimeIndex(['2019-10-27 02:30:00',
'2019-10-27 02:00:00',
'2019-10-27 02:30:00',
'2019-10-27 03:00:00',
'2019-10-27 03:30:00'], tz="CET")
AmbiguousTimeError: Cannot infer dst time from 2019-10-27 02:30:00, try using the 'ambiguous' argument
推斷
設置 ambiguous="infer"
告訴 Pandas 嘗試解決提供的日期序列中的歧義:
pd.DatetimeIndex(['2019-10-27 02:30:00',
'2019-10-27 02:00:00',
'2019-10-27 02:30:00',
'2019-10-27 03:00:00',
'2019-10-27 03:30:00'], tz="CET", ambiguous="infer")
DatetimeIndex(['2019-10-27 02:30:00+02:00', '2019-10-27 02:00:00+01:00',
'2019-10-27 02:30:00+01:00', '2019-10-27 03:00:00+01:00',
'2019-10-27 03:30:00+01:00'],
dtype='datetime64[ns, CET]', freq=None)
在這裏,請注意 Pandas 如何推斷第一個 02:30:00
處於夏令時,而第二個 02:30:30
處於非夏令時。
布爾數組
要明確告訴 Pandas 日期是否應該解析為 DST 還是非 DST,請傳遞一個布爾數組,其中 True
表示 DST:
pd.DatetimeIndex(['2019-10-27 02:30:00',
'2019-10-27 02:50:00'], tz="CET", ambiguous=[True, False])
DatetimeIndex(['2019-10-27 02:30:00+02:00', '2019-10-27 02:50:00+01:00'], dtype='datetime64[ns, CET]', freq=None)
NaT
要將不明確的日期設置為NaT
(not-a-time):
pd.DatetimeIndex(['2019-10-27 02:30:00',
'2019-10-27 02:00:00',
'2019-10-27 02:30:00',
'2019-10-27 03:00:00',
'2019-10-27 03:30:00'], tz="CET", ambiguous="NaT")
DatetimeIndex(['NaT', 'NaT', 'NaT', '2019-10-27 03:00:00+01:00',
'2019-10-27 03:30:00+01:00'],
dtype='datetime64[ns, CET]', freq=None)
相關用法
- Python Datetime.replace()用法及代碼示例
- Python Datetime today方法用法及代碼示例
- Python Datetime utcnow方法用法及代碼示例
- Python Datetime fromisoformat方法用法及代碼示例
- Python Datetime Date構造函數用法及代碼示例
- Python Datetime strftime方法用法及代碼示例
- Python Datetime Time構造函數用法及代碼示例
- Python Datetime strptime方法用法及代碼示例
- Python Datetime Timedelta構造函數用法及代碼示例
- Python Datetime utcfromtimestamp方法用法及代碼示例
- Python Datetime now方法用法及代碼示例
- Python Datetime fromtimestamp方法用法及代碼示例
- Python Datetime Datetime構造函數用法及代碼示例
- Python Django DateDetailView用法及代碼示例
- Python DateTime轉integer用法及代碼示例
- Python DateTime astimezone()用法及代碼示例
- Python Django DateTimeField.input_formats用法及代碼示例
- Python DateTime weekday()用法及代碼示例
- Python Pandas DataFrame empty屬性用法及代碼示例
- Python Pandas DataFrame pop方法用法及代碼示例
- Python Pandas DataFrame nsmallest方法用法及代碼示例
- Python Django DataSource用法及代碼示例
- Python Pandas DataFrame sample方法用法及代碼示例
- Python Pandas DataFrame items方法用法及代碼示例
- Python Pandas DataFrame max方法用法及代碼示例
注:本文由純淨天空篩選整理自Isshin Inada大神的英文原創作品 Pandas | DatetimeIndex constructor。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。