无法将索引转换为日期格式

时间:2018-11-01 22:13:39

标签: python datetime

我的数据在索引中处于64位,索引中的值类似于“ 01/11/2018”。它是从csv导入的数据。我无法将其转换为“ 01-11-2018”格式。因为出现错误消息,我该怎么做:

“时间数据0与格式'%Y'(匹配)”不匹配

我从以下网站获得了数据: https://www.nasdaq.com/symbol/spy/historical  并且您可以在底部找到“以Excel格式下载此文件”图标。

  import datetime

  spyderdat.index =  pd.to_datetime(spyderdat.index, format='%Y')
  spyderdat.head()

如何正确格式化?

非常感谢。

3 个答案:

答案 0 :(得分:1)

您的format string必须完全匹配:

import datetime

spyderdat.index =  pd.to_datetime(spyderdat.index, format='%d/%m/%Y')
spyderdat.head()

不带间谍的示例:

import datetime

date = "1/11/2018"
print(datetime.datetime.strptime(date,"%d/%m/%Y"))

输出:

2018-11-01 00:00:00

您可以strftime随时选择此日期时间。有关格式,请参见链接。或者您存储日期时间。

答案 1 :(得分:1)

假设您输入的内容是字符串,则将/转换为-并不能解决问题。
真正的问题是,您告诉to_datetime期望输入字符串仅是4位数字,但是您将输入的日期,日期和月份都包括在内。 / p>

如果您打算仅使用年份部分,则应首先使用split之类的方法手动提取年份。
如果要使用完整日期作为值,则需要将格式更改为%d/%m/%Y之类的格式。 (尽管由于值原因,我无法确定您输入的是几天还是几天。)

答案 2 :(得分:1)

简单的方法就是尝试

datetime.datetime.strptime("01/11/2018", '%d/%m/%Y').strftime('%d-%m-%Y')