熊猫指数日期时间转换月和日

时间:2017-08-16 07:01:13

标签: pandas datetime indexing format

我的panda df.index格式如下。

这是一串日/月/年,所以第一项是05Sep2017等:

  1. 05/09/17#05Sep2017
  2. 07/09/17#07Sep2017
  3. ...
  4. 18/10/17#18Oct2017
  5. 应用

    df.index = pd.to_datetime(df.index) 
    

    到上面,将其转换为:

    1. 2017-05-09#09May2017
    2. 2017-07-09#09Jul2017
    3. ...
    4. 2017-10-18#18Oct2017
    5. 似乎正在发生的事情是第一个条目正在切换日期和月份。相反,最后一个条目(日期大于12)将被正确转换。

      我尝试通过将索引转换为列并应用:

      来切换月日
      df['date'] = df.index
      df['date'].apply(lambda x: dt.datetime.strftime(x, '%Y-%d-%m')) 
      

      以及:

      df['date'].apply(lambda x: dt.datetime.strftime(x, '%Y-%m-%d')) 
      

      但无济于事。 如何将索引转换为datetime,其中所有条目都是日/月/年?

1 个答案:

答案 0 :(得分:0)

pandas是date s YY-MM-DD的默认格式。

df = df.set_index('date_col')
df.index = pd.to_datetime(df.index)
print (df)
            val
2017-05-09    4
2017-07-09    8
2017-10-18    2

print (df.index)
DatetimeIndex(['2017-05-09', '2017-07-09', '2017-10-18'], dtype='datetime64[ns]', freq=None)

您需要strftime,但丢失了日期时间,因为获取字符串:

df.index = pd.to_datetime(df.index).strftime('%Y-%d-%m')
print (df.index)
Index(['2017-09-05', '2017-09-07', '2017-18-10'], dtype='object')
df.index = pd.to_datetime(df.index).strftime('%d-%b-%Y')
print (df)
             val
09-May-2017    4
09-Jul-2017    8
18-Oct-2017    2