我有一个包含日期列的dataframe。我想将此日期列转换为我的索引。当我将date列更改为pd.to_datetime(df['Date'], errors='raise', dayfirst=True)时,我得到:
df1.head()
Out[60]:
Date Open High Low Close Volume Market Cap
0 2018-03-14 0.789569 0.799080 0.676010 0.701902 479149000 30865600000
1 2018-03-13 0.798451 0.805729 0.778471 0.789711 279679000 31213000000
2 2018-12-03 0.832127 0.838328 0.787882 0.801048 355031000 32529500000
3 2018-11-03 0.795765 0.840407 0.775737 0.831122 472972000 31108000000
4 2018-10-03 0.854872 0.860443 0.793736 0.796627 402670000 33418600000Date的格式最初是string dd-mm-yyyy,但是正如您所看到的,转换为datetime后,从第二行开始就搞乱了。如何获得一致的日期时间?
编辑:我想我已经解决了。使用下面关于格式的答案,我发现错误存在于我用来生成数据的包(\[cryptocmd\])中。我在包的utils脚本中将格式更改为%Y-%m-%d,现在似乎运行良好。
发布于 2018-03-16 04:14:46
根据the docs的说法
dayfirst :布尔值,默认为False
如果arg是字符串或其list-likes,则指定日期解析顺序。如果为True,则解析日期的第一天,例如10/11/12被解析为2012-11-10。警告: dayfirst=True并不严格,但更倾向于首先使用 day进行解析(这是一个已知错误,基于dateutil行为)。
重点是我的。因为您显然知道您的格式是"dd-mm-yyyy“,所以应该显式指定它:
df['Date'] = pd.to_datetime(df['Date'], format='%d-%m-%Y', errors='raise')https://stackoverflow.com/questions/49308247
复制相似问题