将“数字”字符串转换为datetime python

时间:2019-07-11 22:23:25

标签: python string datetime

我有一个pandas数据框,其中date列包含以下值: 20190709 20190710 20190708

我们将此列称为:日期

我想将其转换为显示为'2019-07-09'

尝试一些随机的东西,但是似乎是不合时宜的。谁能帮我得到正确的公式?我猜这很简单,但是我花了更多的时间在猜测上

这是我最近尝试过的一件事,不确定发生了什么

df['date2'] = datetime.strptime(df['date'].astype(str),"%Y-%m-%d")

获取以下错误消息 “ strptime()参数1必须是str,而不是Series”

2 个答案:

答案 0 :(得分:1)

它比您想象的要容易,Pandas具有很好的日期自动解析器,因此无需预先解析字符串就可以获取格式。一系列工作示例:

a = ['20190709', '20190710']
a = pd.Series(a)
df['date2'] = pd.to_datetime(a)

您的情况应该这样做:

df['date2'] = pd.to_datetime(df['date'])

答案 1 :(得分:1)

如果日期中的数字前后一致,则可以对字符串进行切片:

>>> s = '20190708'
>>> datestr = '-'.join([s[:4], s[4:6], s[6:] ])
>>> datetime.strptime(datestr,"%Y-%m-%d")
datetime.datetime(2019, 7, 8, 0, 0)