教你怎么用python实现字符串转日期


Posted in Python onMay 24, 2021

一、生成日期数据

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

教你怎么用python实现字符串转日期

也可以设置频率freq=‘M'

date_1=pd.date_range(start=start_date,periods=10,freq='M')

教你怎么用python实现字符串转日期

1.2 设定起始、终止时间、频率

start_date='20200101'
end_date='20200110'
date_2=pd.date_range(start=start_date,end=end_date,freq='D')  #默认为D
date_2

教你怎么用python实现字符串转日期

频率freq的设置有:

D --- Day --- 每日
B --- BusinessDay --- 每工作日
H --- Hour --- 每小时
T/min --- Minute ---每分钟
S --- Second --- 每秒
M --- MonthEnd --- 每月最后一个日历日
Q --- Quater --- 每季度

注意上面生成的日期数据,就是list格式,在构建数据框时可以直接用。

pd.DataFrame({'Time':date_1})

教你怎么用python实现字符串转日期

二、字符串转化为日期

导入数据时常会出现,日期型数据导入后,变成字符串格式,在后续使用时,需要转化为日期。

构造一个时间数据

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()

教你怎么用python实现字符串转日期

上面数据构造时,为了方便之后举例子,将生成的时间数据转化为字符串后,构造的数据框。

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']

教你怎么用python实现字符串转日期

三、从日期数据中提取成分

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 字符串切片截取

数据如下:

教你怎么用python实现字符串转日期

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))

教你怎么用python实现字符串转日期

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字符串转日期内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python实现以时间换空间的缓存替换算法
Feb 19 Python
Python获取暗黑破坏神3战网前1000命位玩家的英雄技能统计
Jul 04 Python
深入浅出分析Python装饰器用法
Jul 28 Python
Python 逐行分割大txt文件的方法
Oct 10 Python
Django压缩静态文件的实现方法详析
Aug 26 Python
用Python实现数据的透视表的方法
Nov 16 Python
Python多线程处理实例详解【单进程/多进程】
Jan 30 Python
浅谈python3.6的tkinter运行问题
Feb 22 Python
python 多线程对post请求服务器测试并发的方法
Jun 13 Python
Python笔记之facade模式
Nov 20 Python
python下载的库包存放路径
Jul 27 Python
利用Python将list列表写入文件并读取的方法汇总
Mar 25 Python
pandas中DataFrame重置索引的几种方法
May 24 #Python
pandas取dataframe特定行列的实现方法
pytorch 如何使用amp进行混合精度训练
只需要这一行代码就能让python计算速度提高十倍
pytorch 如何使用float64训练
pytorch 使用半精度模型部署的操作
May 24 #Python
解决Pytorch半精度浮点型网络训练的问题
May 24 #Python
You might like
php数据库抽象层 PDO
2011/05/07 PHP
destoon首页调用求购供应信息的地区名称的方法
2014/08/21 PHP
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
jquery 读取页面load get post ajax 四种方式代码写法
2011/04/02 Javascript
javascript实现可改变滚动方向的无缝滚动实例
2013/06/17 Javascript
jquery入门必备的基本认识及实例(整理)
2013/06/24 Javascript
JS 弹出层 定位至屏幕居中示例
2014/05/21 Javascript
js实现文本上下来回滚动
2017/02/03 Javascript
用js屏蔽被http劫持的浮动广告实现方法
2017/08/10 Javascript
详解Angular调试技巧之报错404(not found)
2018/01/31 Javascript
浅谈JS的原型和继承
2019/05/08 Javascript
Vue Extends 扩展选项用法完整实例
2019/09/17 Javascript
JS实现扫码枪扫描二维码功能
2020/01/03 Javascript
解决echarts 一条柱状图显示两个值,类似进度条的问题
2020/07/20 Javascript
element中table高度自适应的实现
2020/10/21 Javascript
手动实现vue2.0的双向数据绑定原理详解
2021/02/06 Vue.js
[42:27]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第三局
2016/03/05 DOTA
Python判断Abundant Number的方法
2015/06/15 Python
Python中函数的参数传递与可变长参数介绍
2015/06/30 Python
使用Django Form解决表单数据无法动态刷新的两种方法
2017/07/14 Python
python实现一个简单的ping工具方法
2019/01/31 Python
Python使用pymongo库操作MongoDB数据库的方法实例
2019/02/22 Python
python查询文件夹下excel的sheet名代码实例
2019/04/02 Python
解决pycharm运行程序出现卡住scanning files to index索引的问题
2019/06/27 Python
Python使用Numpy模块读取文件并绘制图片
2020/05/13 Python
PyCharm2020.1.2社区版安装,配置及使用教程详解(Windows)
2020/08/07 Python
python 进程池pool使用详解
2020/10/15 Python
医学生职业规划范文
2014/01/05 职场文书
物理力学求职信
2014/02/18 职场文书
服装设计专业毕业生求职信
2014/04/09 职场文书
个人对照检查材料思想汇报(四风问题)
2014/09/25 职场文书
人身意外保险授权委托书
2014/10/01 职场文书
2014年个人委托书范本
2014/10/13 职场文书
2015年学校禁毒工作总结
2015/05/27 职场文书
不会写演讲稿,快来看看这篇文章!
2019/08/06 职场文书
pytorch 使用半精度模型部署的操作
2021/05/24 Python