如何从日 - 月 - 年 - 月 - 日重新格式化日期?

时间:2017-01-05 21:08:21

标签: python pandas dataframe

我的目标是删除索引并更改日期格式。这是数据框:

       Date    tsla    goog    aapl   msft
0    30-Dec-16  217.50  782.78  117.20  62.99
1    29-Dec-16  219.20  785.93  117.11  63.20
2    28-Dec-16  223.80  794.23  118.02  63.40
3    27-Dec-16  222.25  797.86  117.80  64.07
4    23-Dec-16  213.45  792.74  116.52  63.54
5    22-Dec-16  209.99  793.32  116.51  64.10
6    21-Dec-16  212.23  796.68  117.40  63.70
7    20-Dec-16  209.00  798.65  117.50  63.80

以下是我希望它的外观:

        Date    tsla    goog    aapl   msft
   2016-12-30  217.50  782.78  117.20  62.99
   2016-12-29  219.20  785.93  117.11  63.20
   2016-12-28  223.80  794.23  118.02  63.40
   2016-12-27  222.25  797.86  117.80  64.07
   2016-12-23  213.45  792.74  116.52  63.54
   2016-12-22  209.99  793.32  116.51  64.10
   2016-12-21  212.23  796.68  117.40  63.70
   2016-12-20  209.00  798.65  117.50  63.80

我尝试了我在Reformatting a list of date strings to day, month, year in Python找到的内容:

dfTSLA = [datetime.datetime.strptime(str(i), '%d-%m-%y').strftime('%y-%m-%d') for i in dfTSLA]

但我收到错误"时间数据' \ ufeffDate'不匹配格式'%d-%m-%y'",这是有道理的我猜。不确定如何去做,因为月份是一个字符串

1 个答案:

答案 0 :(得分:1)

你可以这样做

如果要将类型更改为str

df=pd.DataFrame(["30-Dec-16"],columns=['Date'])
df['Date']=pd.to_datetime(df['Date']).map(lambda x: x.strftime('%Y-%m-%d'))

如果要保留datetime64类型

df['Date']=pd.to_datetime(df['Date']).dt.normalize()