【Python基础】关于日期特征,你想知道操作都在这儿~
今日锦囊
特征锦囊:关于日期特征,你想知道操作都在这儿~
? Index
字符串转日期 日期转字符串 13位的时间戳转 日期格式str 13位的时间戳转datetime 10位的时间戳转 日期格式str 10位的时间戳转datetime 提取月的总天数 获取前一天日期 获取今天日期 提取日期实体 日期差计算(天) 日期差计算(小时)
我们做模型经常会遇到很多日期的操作,比如我们要把导入的原始数据里的日期做一下预处理,把该转的类型给转了,把该要提取的信息给提取出来。今天,这篇锦囊就是把这些相关日期的操作给罗列了一下,希望大家看了有一定的帮助~
在开始之前,我们需要先导入一些常用的库包以及捏造一些测试数据。
# 导入相关库包
import pandas as pd
import numpy as np
import datetime
import time
import random
from calendar import monthrange
# 捏造数据
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()
字符串转日期 ?
# 字符串转日期
df['datetime64'] = pd.to_datetime(df['date'])
日期转字符串 ?
# 日期转字符串
df['date_str'] = df['datetime64'].apply(lambda x: x.strftime('%Y-%m-%d %H:%M:%S'))
13位的时间戳转 日期格式str ?
# 13位的时间戳转 日期格式str
df['timestamp13_to_datetime'] = df['timestamp13'].apply(lambda x: \
time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(x/1000)))
13位的时间戳转datetime ?
# 13位的时间戳转datetime
df['timestamp13_to_datetime2'] = pd.to_datetime(df['timestamp13_to_datetime'])
10位的时间戳转 日期格式str ?
# 10位的时间戳转 日期格式str
df['timestamp10_to_datetime'] = df['timestamp10'].apply(lambda x: \
time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(x)))
10位的时间戳转datetime ?
# 10位的时间戳转datetime
df['timestamp10_to_datetime2'] = pd.to_datetime(df['timestamp10_to_datetime'])
提取月的总天数 ?
# 提取月的总天数
def extract_month_range(year, month):
'''提取这个月的总天数'''
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 则为 天
当我们跑完了上面的代码,就会得到下面的结果集:
今天的分享就到这里啦~感谢阅读!
往期精彩回顾
获取本站知识星球优惠券,复制链接直接打开:
https://t.zsxq.com/qFiUFMV
本站qq群704220115。
加入微信群请扫码:
评论