一、生成日期數據
import pandas as pd pd.date_range( )
同生成隨機數的思想類似,使用pandas庫中的函數
pd.date_range(start=None,end=None,periods=None,freq=None,tz=None,normalize=False,name=None,close=None,**kwargs)
1.1 設定開始時間、長度、頻率
start_date="20200101" length=10 date_1=pd.date_range(start=start_date,periods=10).tolist() #默認freq為D,每天 date_1
也可以設置頻率freq=‘M"
date_1=pd.date_range(start=start_date,periods=10,freq="M")
1.2 設定起始、終止時間、頻率
start_date="20200101" end_date="20200110" date_2=pd.date_range(start=start_date,end=end_date,freq="D") #默認為D date_2
頻率freq的設置有:
D --- Day --- 每日 B --- BusinessDay --- 每工作日 H --- Hour --- 每小時 T/min --- Minute ---每分鐘 S --- Second --- 每秒 M --- MonthEnd --- 每月最后一個日歷日 Q --- Quater --- 每季度
注意上面生成的日期數據,就是list格式,在構建數據框時可以直接用。
pd.DataFrame({"Time":date_1})
二、字符串轉化為日期
導入數據時常會出現,日期型數據導入后,變成字符串格式,在后續使用時,需要轉化為日期。
構造一個時間數據
date_list1=pd.date_range(start=start_date,periods=gap).strftime("%Y%m%d").tolist() num1=np.random.randint(1,101,100) #生成1-101的隨機整數 num2=np.random.randint(100,201,100) df_temp=pd.DataFrame({"Time":date_list1, "Number1":num1, "Number2":num2}) df_temp.head()
上面數據構造時,為了方便之后舉例子,將生成的時間數據轉化為字符串后,構造的數據框。
2.1 pd.to_datetime()
print(df_temp["Time"].dtype) print(pd.to_datetime(df_temp["Time"]).dtype)
輸出:
object
datetime64[ns]
pd.datetime這個函數可以直接作用在數據框的列上面,直接轉換。
2.2 datetime.strptime
注意區分:
from datetime import datetime datetime.strftime() #由日期格式轉化為字符串 datetime.strptime() #由字符串格式轉化為日期
例子:
print(datetime.strptime("20200101","%Y%m%d")) print(datetime.strptime("2020-01-01","%Y-%m-%d"))
輸出:
2020-01-01 00:00:00
2020-01-01 00:00:00
但是這個函數只能作用一個值,如果對數據框的列進行操作,需要首先定義一個函數:
from datetime import datetime def date_ch(value): return datetime.strptime(value,"%Y%m%d") print(date_ch("20200812")) df_temp["Time"]=df_temp["Time"].apply(date_ch) df_temp["Time"]
三、從日期數據中提取成分
3.1 直接提取:
pd.to_datetime("20200307").month #year:日 #month:月 #week:周 #day:日
輸出:
3
3.2 使用strftime函數:
pd.to_datetime("20200101").strftime("%Y-%m")
輸出:
‘2020-01"
3.3 字符串切片截取
數據如下:
def date_ch(value): str_value=value.strftime("%Y-%m-%d") month=str_value[5:7] return month df_temp["Time"].apply(date_ch) #或者 #df_temp["Time"].apply(lambda x:date_ch(x))
strftime函數提取日期成分中,日期的標準化格式符號:
%a 星期的簡寫。如 星期三為Web %A 星期的全寫。如 星期三為Wednesday %b 月份的簡寫。如4月份為Apr %B 月份的全寫。如4月份為April %c: 日期時間的字符串表示。(如: 05/01/10 09:00:20) %d: 日在這個月中的天數 %f: 微秒(范圍[0,999999]) %H: 小時(24小時制,[0, 23]) %I: 小時(12小時制,[0, 11]) %j: 日在年中的天數 [001,366] %m: 月份([01,12]) %M: 分鐘([00,59]) %p: AM或者PM %S: 秒(范圍為[00,61]) %U: 周在當年的周數當年的第幾周),星期天作為周的第一天 %w: 今天在這周的天數,范圍為[0, 6],6表示星期天 %W: 周在當年的周數,星期一作為周的第一天 %x: 日期字符串(如:05/01/20) %X: 時間字符串(如:09:00:20) %y: 2個數字表示的年份 %Y: 4個數字表示的年份 %z: 與utc時間的間隔 (如果是本地時間,返回空字符串) %Z: 時區名稱(如果是本地時間,返回空字符串)
到此這篇關于教你怎么用python實現字符串轉日期的文章就介紹到這了,更多相關python字符串轉日期內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/qq_43165880/article/details/117166506