日期格式轉(zhuǎn)換不外乎就是日期格式-字符串格式-數(shù)值格式之間的相互轉(zhuǎn)換倘零,以及相同格式的不同形式間的轉(zhuǎn)換,最常用的是datetime模塊
一、日期時間格式轉(zhuǎn)字符
首先獲取當(dāng)天日期
from datetime import datetime
today = datetime.today()
print(today)
#datetime.datetime(2018, 9, 8, 22, 32, 46)
返回結(jié)果分別包含年月日時分秒,代表當(dāng)前的日期時間苞俘,這是最常見的日期時間格式,在DataFrame的顯示形式是“2018-09-08 22:32:46”龄章,假如我們要把日期轉(zhuǎn)換為字符串形式“2018-09-08”或“20180908”等吃谣,就要用到datetime的內(nèi)置strftime函數(shù)。
today.strftime('%Y-%m-%d')
#'2018-09-08'
today.strftime('%Y%m%d')
#'20180908'
today.strftime('%Y-%m')
#'2018-09'
二做裙、字符轉(zhuǎn)日期時間
第一種方法用datetime模塊的strptime函數(shù):
datetime.strptime('2018-09-08','%Y-%m-%d')
#datetime.datetime(2018, 9, 8, 0, 0)
strptime函數(shù)接受兩個參數(shù)岗憋,第一個是要轉(zhuǎn)換的字符串日期,第二個是日期時間的格式化形式菇用。
第二種方法可以借助pandas模塊里面的to_datetime函數(shù):
import pandas as pd
pd.to_datetime('2018-09-08')
#Timestamp('2018-09-08 00:00:00')
pd.to_datetime('201909',format='%Y%m')
#Timestamp('2019-09-01 00:00:00')
to_datetime函數(shù)常用的參數(shù)有兩個澜驮,第一個是要轉(zhuǎn)換的字符日期時間格式,第二個是該字符日期時間的格式化形式惋鸥,對于簡單的時間格式第二個參數(shù)format可以省略杂穷,to_datetime會自動識別,復(fù)雜一點(diǎn)的時間格式需要指定format卦绣。
三耐量、數(shù)值轉(zhuǎn)日期
這種情況一般發(fā)生在,數(shù)據(jù)庫或者我們導(dǎo)入Python的數(shù)據(jù)該日期時間字段是以數(shù)值格式儲存的滤港,這時需要把它轉(zhuǎn)為日期時間格式以方便后續(xù)的應(yīng)用廊蜒。
數(shù)值轉(zhuǎn)日期只需先把數(shù)值轉(zhuǎn)換為字符趴拧,再用上面介紹的字符轉(zhuǎn)日期處理就可以了。
dt = 20180908
datetime.strptime(str(dt),'%Y%m%d')
#datetime.datetime(2018, 9, 8, 0, 0)
四山叮、pandas中的時間處理
首先著榴,我們構(gòu)造一個簡單的數(shù)據(jù)示例 df
import random
df = pd.DataFrame({
'some_data' : [random.randint(100,999) for i in range(1,10)],
'a_col' : '2019-07-12',
'b_col' : datetime.datetime.now().date(),
'c_col' : time.time()},
index=range(1,10))
查看它的數(shù)據(jù)類型
some_data 9 non-null int64
a_col 9 non-null object
b_col 9 non-null object
c_col 9 non-null float64
如何轉(zhuǎn)換為 pandas 自帶的 datetime 類型
# 字符串類型轉(zhuǎn)換為 datetime64[ns] 類型
df['a_col'] = pd.to_datetime(df['a_col'])
# datetime.date 類型轉(zhuǎn)換為 datetime64[ns] 類型
df['b_col'] = pd.to_datetime(df['b_col'])
# 時間戳(float) 類型轉(zhuǎn)換為 datetime64[ns] 類型
df['c_col'] = pd.to_datetime(df['c_col'].apply(lambda x:time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(x))))
這里還遇到了一個將默認(rèn)int64格式轉(zhuǎn)化為datetime64[M]
df['order_dt']=pd.to_datetime(df.order_dt,format="%Y%m%d")
df['month']=df.order_dt.values.astype('datetime64[M]')
轉(zhuǎn)載自https://blog.csdn.net/sinat_30715661/article/details/82534033
詳細(xì)內(nèi)容請看https://zhuanlan.zhihu.com/p/84582834