我有一个带有日期列的数据框。我想将此日期列转换为我的索引。当我将日期列更改为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 33418600000
Date的格式原来是字符串dd-mm-yyyy,但正如你所看到的,转换到datetime会使第二行的内容变得混乱。如何获得一致的日期时间?
编辑:我想我解决了。使用下面关于格式的答案我发现错误是在我用来生成数据的包中(\[cryptocmd\]
)。我在包的utils脚本中将格式更改为%Y-%m-%d,现在它似乎工作正常。
答案 0 :(得分:1)
根据the docs:
dayfirst:boolean,默认为False
如果arg是str或其列表,请指定日期解析顺序。如果是真的, 首先解析日期,例如10/11/12被解析为2012-11-10。 警告:dayfirst = True不严格,但更愿意使用进行解析 第一天(这是一个已知错误,基于dateutil行为)。
强调我的。由于您显然知道您的格式为“dd-mm-yyyy”,因此您应明确指定:
df['Date'] = pd.to_datetime(df['Date'], format='%d-%m-%Y', errors='raise')