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

摘要

时间序列(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。
想进入交流群的,备注: 数据分析交流群

你可能感兴趣的:(Python)