dataframe datetimeindex更改

时间:2018-03-15 20:01:38

标签: python pandas datetime indexing

我有一个带有日期列的数据框。我想将此日期列转换为我的索引。当我将日期列更改为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,现在它似乎工作正常。

1 个答案:

答案 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')