我有一个pandas数据框,其中date列包含以下值: 20190709 20190710 20190708
我们将此列称为:日期
我想将其转换为显示为'2019-07-09'
尝试一些随机的东西,但是似乎是不合时宜的。谁能帮我得到正确的公式?我猜这很简单,但是我花了更多的时间在猜测上
这是我最近尝试过的一件事,不确定发生了什么
df['date2'] = datetime.strptime(df['date'].astype(str),"%Y-%m-%d")
获取以下错误消息 “ strptime()参数1必须是str,而不是Series”
答案 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)