【Python】字符串和datetime相互转换

系统 136 0

摘要

时间序列(time series)数据是一种重要的结构化数据形式,应用于多个领域,包括金融学、经济学、生态学、神经科学、物理学等。在多个时间点观察或测量到的任何事物都可以形成一段时间序列。在进行时间序列问题分析时,通常需要将字符串和datetime类型相互转换,本文分享他们之间相互转换的集中常用方法(主要用到的库有datetime、pandas以及dateutil)。

(一)datetime -> str
datetime类型转成str一般常用的有两种方法:str和传入格式化字符串的strftime方法。
1.str()类型转换

            
              from datetime import datetime
stamp = datetime(2011, 1, 3)
stamp

            
          

在这里插入图片描述

            
              str(stamp)

            
          

在这里插入图片描述
2.strftime方法类型转换

            
              stamp.strftime('%Y-%m-%d')

            
          

在这里插入图片描述
下图是全部的格式化编码:
【Python】字符串和datetime相互转换_第1张图片
【Python】字符串和datetime相互转换_第2张图片

(一)str -> datetime
将str转成日期时间类型有三种常用方法:一个是与strftime互逆的strptime方法、以及dateutil包的parse方法、还有pandas的to_datetime方法。
1.strptime方法

            
              value = '2011-01-03'
datetime.strptime(value, '%Y-%m-%d')

            
          

在这里插入图片描述

2.dateutil包中的parser.parse方法

            
              from dateutil.parser import parse
parse('2011-01-03')

            
          

在这里插入图片描述
这个方法还有个很好的地方就是不用你显示的给定编码格式,dateutil可以解析几乎所有人类能够理解的日期表示形式。

            
              parse('Jan 31, 1997 10:45 PM')

            
          

在这里插入图片描述
在国际通用的格式中,日出现在月的前面很普遍,传入dayfirst=True(默认值为False)即可解决这个问题.

            
              parse('6/12/2011', dayfirst=True)

            
          

在这里插入图片描述

注意:parser是一个实用但不完美的工具。比如说,它会把一些原本不是日期的字符串认作是日期(比如"42"会被解析为2042年的今天)。

3.pandas包的to_datetime方法
to_datetime方法可以解析多种不同的日期表示形式。对标准日期格式(如ISO8601)的解析非常快:

            
              import pandas as pd
datestrs = ['2011-07-06 12:00:00', '2011-08-06 00:00:00']
pd.to_datetime(datestrs)

            
          

在这里插入图片描述
它还可以处理缺失值(None、空字符串等):

            
              idx = pd.to_datetime(datestrs + [None])
idx

            
          

在这里插入图片描述
其中第三个元素为NaT:Not a Time。是pandas中时间戳数据的null值。

欢迎添加个人微信号:liu2536036458。
想进入交流群的,备注: 数据分析交流群


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请请扫描上面二维码支持博主1元、2元、5元等您想捐的金额吧,狠狠点击下面给点支持吧

发表我的评论
最新评论 总共0条评论