【Python基礎(chǔ)】關(guān)于日期特征,你想知道操作都在這兒~
今日錦囊
特征錦囊:關(guān)于日期特征,你想知道操作都在這兒~
? Index
字符串轉(zhuǎn)日期 日期轉(zhuǎn)字符串 13位的時間戳轉(zhuǎn) 日期格式str 13位的時間戳轉(zhuǎn)datetime 10位的時間戳轉(zhuǎn) 日期格式str 10位的時間戳轉(zhuǎn)datetime 提取月的總天數(shù) 獲取前一天日期 獲取今天日期 提取日期實體 日期差計算(天) 日期差計算(小時)
我們做模型經(jīng)常會遇到很多日期的操作,比如我們要把導(dǎo)入的原始數(shù)據(jù)里的日期做一下預(yù)處理,把該轉(zhuǎn)的類型給轉(zhuǎn)了,把該要提取的信息給提取出來。今天,這篇錦囊就是把這些相關(guān)日期的操作給羅列了一下,希望大家看了有一定的幫助~
在開始之前,我們需要先導(dǎo)入一些常用的庫包以及捏造一些測試數(shù)據(jù)。
#?導(dǎo)入相關(guān)庫包
import?pandas?as?pd
import?numpy?as?np
import?datetime
import?time
import?random
from?calendar?import?monthrange?
#?捏造數(shù)據(jù)
df?=?pd.DataFrame(
??????[[1,?1508212054157,'1993-11-03'],
???????[2,?1507029571478,'1993-11-04'],
???????[3,?1508211513583,'1993-10-03'],
???????[4,?1507029532200,'1993-02-03'],
???????[5,?1507029671831,'1993-06-20']
??????]
??????,columns=['user_id','timestamp13','date'])
#?捏造?10位的?時間戳
df['timestamp10']?=?df['user_id'].apply(lambda?x:int(time.time()-10000*x))
df.head()

字符串轉(zhuǎn)日期 ?
#?字符串轉(zhuǎn)日期
df['datetime64']?=?pd.to_datetime(df['date'])
日期轉(zhuǎn)字符串 ?
#?日期轉(zhuǎn)字符串
df['date_str']?=?df['datetime64'].apply(lambda?x:?x.strftime('%Y-%m-%d?%H:%M:%S'))
13位的時間戳轉(zhuǎn) 日期格式str ?
#?13位的時間戳轉(zhuǎn)?日期格式str
df['timestamp13_to_datetime']?=?df['timestamp13'].apply(lambda?x:?\
????????????????????????????????????????????????????????time.strftime('%Y-%m-%d?%H:%M:%S',time.localtime(x/1000)))
13位的時間戳轉(zhuǎn)datetime ?
#?13位的時間戳轉(zhuǎn)datetime
df['timestamp13_to_datetime2']?=?pd.to_datetime(df['timestamp13_to_datetime'])
10位的時間戳轉(zhuǎn) 日期格式str ?
#?10位的時間戳轉(zhuǎn)?日期格式str
df['timestamp10_to_datetime']?=?df['timestamp10'].apply(lambda?x:?\
????????????????????????????????????????????????????????time.strftime('%Y-%m-%d?%H:%M:%S',time.localtime(x)))
10位的時間戳轉(zhuǎn)datetime ?
#?10位的時間戳轉(zhuǎn)datetime
df['timestamp10_to_datetime2']?=?pd.to_datetime(df['timestamp10_to_datetime'])
提取月的總天數(shù) ?
#?提取月的總天數(shù)
def?extract_month_range(year,?month):
????'''提取這個月的總天數(shù)'''
????first_day_of_month,?days_in_a_month?=?monthrange(int(year),?int(month))
????return?days_in_a_month
df['days_in_a_month']?=?df.apply(lambda?x:?extract_month_range(x['year'],?x['month']),?axis=1)
獲取前一天日期 ?
#?獲取前一天日期
df['yesterday']?=?df['datetime64']?-?datetime.timedelta(days=1)
獲取今天日期 ?
#?獲取今天日期
df['today']?=?datetime.date.today()
提取日期實體 ?
#?提取日期實體
df['day']?=?df['datetime64'].dt.day?#天
df['weekday']?=?df['datetime64'].dt.weekday?#周
df['month']?=?df['datetime64'].dt.month?#月
df['year']?=?df['datetime64'].dt.year?#年
日期差計算(天) ?
#?日期差計算(天)
df['day_dif']?=?(df['datetime64']?-?df['yesterday']).dt.days
日期差計算(小時) ?
#?日期差計算(小時)
df['hour_dif']?=?(df['datetime64']?-?df['yesterday']).values/np.timedelta64(1,?'h')?#?換成?D?則為?天
當我們跑完了上面的代碼,就會得到下面的結(jié)果集:



今天的分享就到這里啦~感謝閱讀!
往期精彩回顧
獲取本站知識星球優(yōu)惠券,復(fù)制鏈接直接打開:
https://t.zsxq.com/qFiUFMV
本站qq群704220115。
加入微信群請掃碼:
評論
圖片
表情
