如何在 Python 中使用 DateTime
所有數(shù)據(jù)在開始時都會自動分配一個“DOB”(出生日期)。因此,在某些時候處理數(shù)據(jù)時不可避免地會遇到日期和時間數(shù)據(jù)。本教程將帶您了解 Python 中的 datetime 模塊以及使用一些外圍庫,如pandas 和 pytz。
在 Python 中,任何與日期和時間有關的事情都由 datetime 模塊處理,它將模塊進一步分為 5 個不同的類。類只是與對象相對應的數(shù)據(jù)類型。下圖總結(jié)了 Python 中的 5 個日期時間類以及常用的屬性和示例。
3個有用的片段
1.將字符串轉(zhuǎn)換為日期時間格式 ,也許是使用datetime 最常見的情況。
由于日期和時間的字母數(shù)字性質(zhì),將類似的日期和時間解析為 Python 通常會被解釋為字符串。在本節(jié)中,我們將介紹如何將字符串列表解析為日期時間格式,以及如何將日期和時間數(shù)據(jù)拆分和組合到數(shù)據(jù)框中的各個列中。
片段 1 的打印輸出
但是,如果日期時間以不尋?;蚰@鈨煽傻姆绞礁袷交趺崔k?一個常見的問題是美國和歐洲的日期時間書寫方式之間的區(qū)別。在美式格式中,月份在前,而在歐洲樣式中,日期在前。
默認情況下,pandas 中的 to_datetime 通過將前一個少于 12 位 (<12) 的數(shù)字解析為月份來將對象轉(zhuǎn)換為日期時間。例如,2/11/2021 將被解析為 2021-02-11,但 13/11/2021 將被解析為 2021-11-13。但是,有這個格式參數(shù)允許您以其他方式定義格式。
或者, strftime() 方法有助于在返回字符串之前格式化日期時間。在以下示例中,原始日期時間之間的破折號 (-) 替換為反斜杠 (/),數(shù)字月份 (02) 替換為縮寫的英語術語 (Feb)。
由于有多種方法可以解釋日期(日、月、年)和時間(時、分、秒),因此了解不同的格式代碼至關重要。下表是常用格式代碼的備忘單。
2.使用時區(qū)
沒有時區(qū)信息的 datetime 對象被稱為“naive”,有時區(qū)信息的對象(通常在末尾帶有 +HH:MM 對應 GMT)被認為是“aware”。pytz 可能是 Python 中最全面的庫之一,它簡化了時區(qū)計算的任務。以下代碼段將向您展示如何在“naive”和“aware” datetime 對象之間進行轉(zhuǎn)換,并可以使用不同的時區(qū)。代碼的最后一部分還演示了如何將給定的日期時間對象轉(zhuǎn)換為本地時區(qū)。此示例顯示了日本和德國的時區(qū)代碼,對于其他地區(qū),您可以在此處參考。
片段2的輸出
3.使用interval比較兩個datetime(s)
有時我們必須有條件地比較兩個日期時間。想象一下,您有兩個數(shù)據(jù)框,第一個數(shù)據(jù)框僅包含一列日期時間,第二個數(shù)據(jù)框包含兩列表示間隔和其余列中的其他信息。您的目標是從第一個數(shù)據(jù)幀中找到匹配的日期時間,如果它落在第二個數(shù)據(jù)幀的間隔內(nèi),如果是,則復制其他列。
實現(xiàn)此目的的一種方法是使用 pd.Interval 壓縮兩個日期時間的間隔,然后將它們分配為數(shù)據(jù)框的索引,稍后可用于有條件地比較和映射日期時間。如果滿足時間條件,這可以通過使用 for 循環(huán)復制感興趣的列來完成。
原文:https://towardsdatascience.com/how-to-work-with-datetime-in-python-26d4092dc484