目錄
- 一、生成日期數(shù)據(jù)
- 1.1 設(shè)定開始時間、長度、頻率
- 1.2 設(shè)定起始、終止時間、頻率
- 二、字符串轉(zhuǎn)化為日期
- 2.1 pd.to_datetime()
- 2.2 datetime.strptime
- 三、從日期數(shù)據(jù)中提取成分
- 3.1 直接提取:
- 3.2 使用strftime函數(shù):
- 3.3 字符串切片截取
一、生成日期數(shù)據(jù)
import pandas as pd
pd.date_range( )
同生成隨機數(shù)的思想類似,使用pandas庫中的函數(shù)
pd.date_range(start=None,end=None,periods=None,freq=None,tz=None,normalize=False,name=None,close=None,**kwargs)
1.1 設(shè)定開始時間、長度、頻率
start_date='20200101'
length=10
date_1=pd.date_range(start=start_date,periods=10).tolist() #默認freq為D,每天
date_1
也可以設(shè)置頻率freq=‘M'
date_1=pd.date_range(start=start_date,periods=10,freq='M')
1.2 設(shè)定起始、終止時間、頻率
start_date='20200101'
end_date='20200110'
date_2=pd.date_range(start=start_date,end=end_date,freq='D') #默認為D
date_2
頻率freq的設(shè)置有:
D --- Day --- 每日
B --- BusinessDay --- 每工作日
H --- Hour --- 每小時
T/min --- Minute ---每分鐘
S --- Second --- 每秒
M --- MonthEnd --- 每月最后一個日歷日
Q --- Quater --- 每季度
注意上面生成的日期數(shù)據(jù),就是list格式,在構(gòu)建數(shù)據(jù)框時可以直接用。
pd.DataFrame({'Time':date_1})
二、字符串轉(zhuǎn)化為日期
導(dǎo)入數(shù)據(jù)時常會出現(xiàn),日期型數(shù)據(jù)導(dǎo)入后,變成字符串格式,在后續(xù)使用時,需要轉(zhuǎn)化為日期。
構(gòu)造一個時間數(shù)據(jù)
date_list1=pd.date_range(start=start_date,periods=gap).strftime('%Y%m%d').tolist()
num1=np.random.randint(1,101,100) #生成1-101的隨機整數(shù)
num2=np.random.randint(100,201,100)
df_temp=pd.DataFrame({'Time':date_list1,
'Number1':num1,
'Number2':num2})
df_temp.head()
上面數(shù)據(jù)構(gòu)造時,為了方便之后舉例子,將生成的時間數(shù)據(jù)轉(zhuǎn)化為字符串后,構(gòu)造的數(shù)據(jù)框。
2.1 pd.to_datetime()
print(df_temp['Time'].dtype)
print(pd.to_datetime(df_temp['Time']).dtype)
輸出:
object
datetime64[ns]
pd.datetime這個函數(shù)可以直接作用在數(shù)據(jù)框的列上面,直接轉(zhuǎn)換。
2.2 datetime.strptime
注意區(qū)分:
from datetime import datetime
datetime.strftime() #由日期格式轉(zhuǎn)化為字符串
datetime.strptime() #由字符串格式轉(zhuǎn)化為日期
例子:
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
但是這個函數(shù)只能作用一個值,如果對數(shù)據(jù)框的列進行操作,需要首先定義一個函數(shù):
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']
三、從日期數(shù)據(jù)中提取成分
3.1 直接提取:
pd.to_datetime('20200307').month
#year:日
#month:月
#week:周
#day:日
輸出:
3
3.2 使用strftime函數(shù):
pd.to_datetime('20200101').strftime('%Y-%m')
輸出:
‘2020-01'
3.3 字符串切片截取
數(shù)據(jù)如下:
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函數(shù)提取日期成分中,日期的標(biāo)準(zhǔn)化格式符號:
%a 星期的簡寫。如 星期三為Web
%A 星期的全寫。如 星期三為Wednesday
%b 月份的簡寫。如4月份為Apr
%B 月份的全寫。如4月份為April
%c: 日期時間的字符串表示。(如: 05/01/10 09:00:20)
%d: 日在這個月中的天數(shù)
%f: 微秒(范圍[0,999999])
%H: 小時(24小時制,[0, 23])
%I: 小時(12小時制,[0, 11])
%j: 日在年中的天數(shù) [001,366]
%m: 月份([01,12])
%M: 分鐘([00,59])
%p: AM或者PM
%S: 秒(范圍為[00,61])
%U: 周在當(dāng)年的周數(shù)當(dāng)年的第幾周),星期天作為周的第一天
%w: 今天在這周的天數(shù),范圍為[0, 6],6表示星期天
%W: 周在當(dāng)年的周數(shù),星期一作為周的第一天
%x: 日期字符串(如:05/01/20)
%X: 時間字符串(如:09:00:20)
%y: 2個數(shù)字表示的年份
%Y: 4個數(shù)字表示的年份
%z: 與utc時間的間隔 (如果是本地時間,返回空字符串)
%Z: 時區(qū)名稱(如果是本地時間,返回空字符串)
到此這篇關(guān)于教你怎么用python實現(xiàn)字符串轉(zhuǎn)日期的文章就介紹到這了,更多相關(guān)python字符串轉(zhuǎn)日期內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- python字符串的多行輸出的實例詳解
- python列表和字符串的三種逆序遍歷操作
- python 如何比較字符串是否一樣
- python str()如何將參數(shù)轉(zhuǎn)換為字符串類型
- 詳解python字符串駐留技術(shù)
- 如何使用python提取字符串的中英文(正則判斷)
- python 如何將帶小數(shù)的浮點型字符串轉(zhuǎn)換為整數(shù)
- Python的字符串示例講解
- python生成隨機數(shù)、隨機字符、隨機字符串的方法示例
- python如何正確的操作字符串