我的数据在索引中处于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()
如何正确格式化?
非常感谢。
答案 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')