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

3
我是一名pandas学习者。 我有一个数据框,其中包含列'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个回答

4
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

帮助是有用的。谢谢 Wen。 - Haven Shi
@HavenShi,好的 :-) - BENY

1
简单的答案是,你传递给strptime函数的format参数是错误的。你需要使用datetime.strptime(x, "%m-%d-%Y %H:%M")
另外,请确保所有数字都有前导零(例如对于月份,请确保1月为01而不是1。分钟和日期也是同样的道理),否则可能会失败。
我建议你查看python strptime格式化页面,以了解更多关于如何格式化日期的信息。

这对我有用!感谢您的解决方案! - Jo_

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接