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

作者:小白自留地 时间:2021-08-22 16:35:13 

一、生成日期数据


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:  时区名称(如果是本地时间,返回空字符串)

来源:https://blog.csdn.net/qq_43165880/article/details/117166506

标签:python,字符串转日期,pandas库
0
投稿

猜你喜欢

  • 使用Python手工计算x的算数平方根,来自中国古人的数学智慧

    2021-12-07 01:29:53
  • 基于Python创建语音识别控制系统

    2021-08-29 14:02:10
  • Python调用C语言的方法【基于ctypes模块】

    2021-03-08 20:31:24
  • sql server 获取系统时间的方法

    2023-07-17 07:05:36
  • Python 爬虫的工具列表大全

    2023-03-29 06:27:57
  • PHP自定义函数格式化json数据示例

    2023-07-17 07:17:45
  • Python中模块pymysql查询结果后如何获取字段列表

    2023-07-23 18:52:54
  • 用err.raise自定义错误信息

    2008-02-20 12:48:00
  • Django实现文件分享系统的完整代码

    2022-07-12 11:28:21
  • Python BeautifulSoup基本用法详解(通过标签及class定位元素)

    2022-11-06 10:50:49
  • Pytorch训练过程出现nan的解决方式

    2021-04-21 08:12:08
  • asp解决防止表单重复提交的方法

    2007-10-19 18:40:00
  • Python3.5 Pandas模块缺失值处理和层次索引实例详解

    2021-05-20 00:35:50
  • 如何基于Python实现word文档重新排版

    2023-06-09 11:19:24
  • python被修饰的函数消失问题解决(基于wraps函数)

    2021-07-22 17:32:34
  • python删除列表内容

    2023-05-23 02:47:49
  • HTTP Headers 傻瓜教程[译]

    2010-01-25 12:48:00
  • 详解OpenCV和PIL读取和显示图像的差异

    2021-07-06 22:17:22
  • 深入浅析python3 依赖倒置原则(示例代码)

    2021-07-30 02:27:33
  • IE9初窥:支持CSS3,和HTML5?

    2009-12-01 14:20:00
  • asp之家 网络编程 m.aspxhome.com