如何使用pandas更改数据框中的日期时间格式?

时间:2017-11-29 19:40:58

标签: python pandas datetime dataframe

我是一名熊猫学习者。

我有一个列为'DATE'的数据框,该列的日期时间格式类似'11 / 1/2017 1:00'。我想将日期时间格式从'11 / 1/2017 1:00'更改为'1-Dec-17 1:00',我尝试了以下代码:

dir_path = os.path.dirname(os.path.realpath("__file__"))
print(dir_path)

def parse_dates(x):
    return datetime.strptime(x, "%d-%b-%y %H:%M")

df = pd.read_csv(dir_path+"/TEST.csv", parse_dates=['DATE'],date_parser=parse_dates)

但它显示错误:

  

ValueError:时间数据'11 / 1/2017 1:00'与格式'%d-%b-%y不匹配   %H:%M'

我也尝试转换数据帧,但失败了:

df=pd.read_csv(dir_path+"/TEST.csv")
df['DATE'] = pd.to_datetime(df['DATE'],format='%d-%b-%y %H:%M')

同样,它显示错误:

  

ValueError:时间数据'11 / 1/2017 1:00'与格式'%d-%b-%y不匹配   %H:%M'(匹配)

如何解决问题?谢谢你的时间!

2 个答案:

答案 0 :(得分:2)

df=pd.DataFrame({'Time':[ '11/1/2017 1:00', '11/1/2017 1:00', '11/1/2017 1:00', '11/1/2017 1:00']})
df.Time=pd.to_datetime(df.Time).dt.strftime('%d-%b-%y %H:%M')
df
Out[870]: 
              Time
0  01-Nov-17 01:00
1  01-Nov-17 01:00
2  01-Nov-17 01:00
3  01-Nov-17 01:00

答案 1 :(得分:1)

简单的答案是你对strptime函数的format参数是错误的。你想要datetime.strptime(x, "%m-%d-%Y %H:%M")

另外,请确保填写所有数字(即月份,确保1月份为01而不是1.分钟和天数相同的想法),否则可能会失败。

我建议您查看python page for strptime formatting,了解有关如何设置日期格式的详情。