Pandas日期時(shí)間格式化

2022-07-15 09:43 更新

當(dāng)進(jìn)行數(shù)據(jù)分析時(shí),我們會(huì)遇到很多帶有日期、時(shí)間格式的數(shù)據(jù)集,在處理這些數(shù)據(jù)集時(shí),可能會(huì)遇到日期格式不統(tǒng)一的問(wèn)題,此時(shí)就需要對(duì)日期時(shí)間做統(tǒng)一的格式化處理。比如“Wednesday, June 6, 2020”可以寫(xiě)成“6/6/20”,或者寫(xiě)成“06-06-2020。

日期格式化符號(hào)

在對(duì)時(shí)間進(jìn)行格式化處理時(shí),它們都有固定的表示格式,比如小時(shí)的格式化符號(hào)為%H ,分鐘簡(jiǎn)寫(xiě)為%M ,秒簡(jiǎn)寫(xiě)為%S。下表對(duì)常用的日期格式化符號(hào)做了總結(jié):

日期格式化符號(hào)
符號(hào) 說(shuō)明
%y 兩位數(shù)的年份表示(00-99)
%Y 四位數(shù)的年份表示(000-9999)
%m 月份(01-12)
%d 月內(nèi)中的一天(0-31)
%H 24小時(shí)制小時(shí)數(shù)(0-23)
%I 12小時(shí)制小時(shí)數(shù)(01-12)
%M 分鐘數(shù)(00=59)
%S 秒(00-59)
%a 本地英文縮寫(xiě)星期名稱(chēng)
%A 本地英文完整星期名稱(chēng)
%b 本地縮寫(xiě)英文的月份名稱(chēng)
%B 本地完整英文的月份名稱(chēng)
%w 星期(0-6),星期天為星期的開(kāi)始
%W 一年中的星期數(shù)(00-53)星期一為星期的開(kāi)始
%x 本地相應(yīng)的日期表示
%X 本地相應(yīng)的時(shí)間表示
%Z 當(dāng)前時(shí)區(qū)的名稱(chēng)
%U 一年中的星期數(shù)(00-53)星期天為星期的開(kāi)始
%j 年內(nèi)的一天(001-366)
%c 本地相應(yīng)的日期表示和時(shí)間表示

Python處理

Python 內(nèi)置的 strptime() 方法能夠?qū)⒆址掌谵D(zhuǎn)換為 datetime 類(lèi)型,下面看一組示例:

from datetime import datetime
#將日期定義為字符串    
date_str1 = 'Wednesday, July 18, 2020' 
date_str2 = '18/7/20' 
date_str3 = '18-07-2020'  
#將日期轉(zhuǎn)化為datetime對(duì)象 
dmy_dt1 = datetime.strptime(date_str1, '%A,%B%d,%Y') 
dmy_dt2 = datetime.strptime(date_str2, '%d/%m/%y') 
dmy_dt3 = datetime.strptime(date_str3, '%d-%m-%Y')  
#處理為相同格式,并打印輸出
print(dmy_dt1) 
print(dmy_dt2) 
print(dmy_dt3) 

輸出結(jié)果:

2020-07-18 00:00:00
2020-07-18 00:00:00
2020-07-18 00:00:00

注意:strftime() 可以將 datetime 類(lèi)型轉(zhuǎn)換為字符串類(lèi)型,恰好與 strptime() 相反。

Pandas處理

除了使用 Python 內(nèi)置的 strptime() 方法外,你還可以使用 Pandas 模塊的 pd.to_datetime() 和 pd.DatetimeIndex() 進(jìn)行轉(zhuǎn)換。

1) to_datetime()

通過(guò) to_datetime() 直接轉(zhuǎn)換為 datetime 類(lèi)型

import pandas as pd
import numpy as np
date = ['2012-05-06 11:00:00','2012-05-16 11:00:00']
pd_date=pd.to_datetime(date)
df=pd.Series(np.random.randn(2),index=pd_date)

輸出結(jié)果:

2012-05-06 11:00:00    0.189865
2012-05-16 11:00:00    1.052456
dtype: float64

2) DatetimeIndex()

使用 Datetimeindex() 函數(shù)設(shè)置時(shí)間序,示例如下:

date = pd.DatetimeIndex(['1/1/2008', '1/2/2008', '1/3/2008', '1/4/2008', '1/5/2008'])
dt = pd.Series(np.random.randn(5),index = date)
print(dt)

輸出結(jié)果:

2008-01-01    1.965619
2008-01-02   -2.897374
2008-01-03    0.625929
2008-01-04    1.204926
2008-01-05    1.755680
dtype: float64


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)