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

一、生成日期数据

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

(0)

相关推荐

  • 基于python获取本地时间并转换时间戳和日期格式

    附上代码与运行结果截图: import time # 获取当前时间 now = time.localtime() # 格式化日期 now_ = time.strftime('%Y-%m-%d %H:%M:%S', now) # 获取当前时间,以时间戳格式 now_stamp = time.time() # 日期转时间戳 change_to_stamp = time.mktime(time.strptime(now_, "%Y-%m-%d %H:%M:%S")) # 时间戳转日期 cha

  • Pycharm创建python文件自动添加日期作者等信息(步骤详解)

    第一步 找到 Preferences,点击进入.进入后找到 Editor – File and Code Templates – Python Script . 第二步 添加自己所需要的信息 第三步 添加完成后,点击 OK 键进行保存. 新建python文件就会看到已添加的默认信息. 常用配置 #-- coding: utf-8 -- #@Time : ${DATE} ${TIME} #@Author : XXXX #@Email : XXXX@qq.com #@File : ${NAME}.p

  • python 日期处理

    仅以此篇记录一下个人常用的 Python 处理日期的库与函数,主要涉及的类库有 Python 自带的 datetime, time 和 calendar,以及第三方的 dateutil.说到日期处理基本上要覆盖的概念有 date, time, datetime, timezone, calendar, 时间的比较与差值,解析与格式化显示等. 在 datetime 模块中类之间的继承关系如下: object ├── date │ └── datetime ├── time ├── timedelt

  • 如何使用 Python 读取文件和照片的创建日期

    本文记录,如何使用 Python 来抓取,图片或者文件的,创建日期,修改日期 1. 读取照片创建日期(._getexif()) from PIL import Image imgPath = 'C:/Users/xx/Desktop/xxxxx.jpg' imge = Image.open(imgPath) exif_data = imge._getexif() ImageDate = exif_data[36867] # 或者 ImageDate = exif_data[306] print(

  • Python 常用日期处理 -- calendar 与 dateutil 模块的使用

    本文紧承上一篇 Python 常用日期处理,因制于篇幅的大小需求才临时分立新篇,这里要简单提到 calendar 和 dateutil 模块的使用,其中 calendar 是 Python 内置的.相比于上一篇而言,此处主旨会更明确一些,只记录三个应用案例,分别是 用 dateutil 灵活的解析 datetime 字符串 给定起始日期后的连续日期 给定起始日期后连续的月末日期 dateutil 灵活的解析 datetime 字符串 使用 Python 内容的 date 或 datetime,

  • python自动提取文本中的时间(包含中文日期)

    有时在处理不规则数据时需要提取文本包含的时间日期. dateutil.parser模块可以统一日期字符串格式. datefinder模块可以在字符串中提取日期. datefinder模块实现也是用正则,功能很全 但是对中文不友好. 但是这两个模块都不能支持中文及一些特殊的情况:所以我用正则写了段代码可进行中文日期及一些特殊的时间识别 例如: '2012年12月12日','3小时前','在2012/12/13哈哈','时间2012-12-11 12:22:30','日期2012-13-11','测

  • python实现按日期归档文件

    在工作过程中,data目录会一直接收文件,收到的文件放到一个大目录里不好判断是否漏收,也不利于检索: 所以写了个脚本,每天早上九点用Windows计划执行,将昨日这个文件夹内收到的文件全部归档,归档文件夹的名字就是昨天的日期,脚本及解释如下: import os import datetime import shutil   # get file name def get_datetime(i):     d = str((datetime.datetime.now() - datetime.t

  • Python如何将字符串转换为日期

    问题 你的应用程序接受字符串格式的输入,但是你想将它们转换为 datetime 对象以便在上面执行非字符串操作. 解决方案 使用Python的标准模块 datetime 可以很容易的解决这个问题.比如: >>> from datetime import datetime >>> text = '2012-09-20' >>> y = datetime.strptime(text, '%Y-%m-%d') >>> z = datetim

  • Python 日期与时间转换的方法

    问题 你需要执行简单的时间转换,比如天到秒,小时到分钟等的转换. 解决方案 为了执行不同时间单位的转换和计算,请使用 datetime 模块. 比如,为了表示一个时间段,可以创建一个 timedelta 实例,就像下面这样: >>> from datetime import timedelta >>> a = timedelta(days=2, hours=6) >>> b = timedelta(hours=4.5) >>> c =

  • python 带时区的日期格式化操作

    如下所示: Wed, 23 Oct 2019 21:12:01 +0800 Wed, 23 Oct 2019 06:08:37 +0000 (GMT) Fri, 11 Oct 2019 12:42:07 +0800 (CST) Wed, 23 Oct 2019 06:08:37 +0000 (UTC) 几种不同的日期格式化方式,不同的时区时间转换成北京时间,也就是东八区的时间,注意的是后面的时区表示方式, def getTimeStamp(self, date): result = re.sea

  • python实现将中文日期转换为数字日期

    1.说明 这篇文章是帮一个群友解答的问题. 他有一个需求,就是对于日期的录入都是中文形式的,需要转换为数字形式的.由于python库中没有函数直接进行转换,因此我写了本篇文章. 2.测试源数据如下 3.代码如下 df = pd.read_excel(r"C:\Users\黄伟\Desktop\chinese_english.xlsx") display(df) def func(x): year = x.split("年")[0] month = x.split(&

  • Python 处理日期时间的Arrow库使用

    Python针对日期时间的处理提供了大量的package,类和方法,但在可用性上来看非常繁琐和麻烦 第三方库Arrow提供了一个合理的.人性化的方法来创建.操作.格式转换的日期,时间,和时间戳,帮助我们使用较少的导入和更少的代码来处理日期和时间. $ pip install arrow 获取当前时间    arrow.utcnow(), arrow.now() >>> arrow.utcnow() <Arrow [2018-02-24T13:15:29.981135+00:00]&

随机推荐