Pandas - 将日期列从dd/mm/yy hh:mm:ss转换为yyyy-mm-dd hh:mm:ss

23

我有一个数据框(df),其中有一个日期列(列名:sale_date),以以下格式存储数据

dd/mm/yy hh:mm:ss

我正在尝试将它转换成 yyyy-mm-dd hh:mm:ss 的格式。尝试过以下代码,但仍未成功将其转换为所需的格式。

df['sale_date'] = pd.to_datetime(df['sale_date'])

有人能帮忙转换一下这个日期列的格式吗?谢谢。


pd.to_datetime 应该将其转换为日期时间格式,然后可以按照所需格式进行格式化。为什么您需要指定的格式?您可以使用 dt.strftime 将其转换为任何格式,但会将列转换为字符串而不是日期时间格式。 - Ken Syme
@KenSyme,感谢您的回复。我正在尝试获取返回的日期列值。 - Kevin Nash
你的 to_datetime 行不通吗?你遇到了错误吗?你得到了什么输出结果,你期望得到什么输出结果? - Ken Syme
2个回答

34

如果您知道您的列中将有一致的格式,您可以将其传递给to_datetime

df['sale_date'] = pd.to_datetime(df['sale_date'], format='%d/%m/%y %H:%M:%S')
如果您的格式不一致但每种情况下都是日在月之前,那么使用dayfirst=True可能就足够了,尽管没有看到数据很难说:
df['sale_date'] = pd.to_datetime(df['sale_date'], dayfirst=True)

25
你可以这样做:
df['sale_date'] = pd.to_datetime(df['sale_date'], format='%d/%m/%y %H:%M:%S').dt.strftime('%Y-%m-%d %H:%M:%S')

输入:

           sale_date
0  04/12/10 21:12:35
1  04/12/10 21:12:30

输出:

             sale_date
0  2010-12-04 21:12:35
1  2010-12-04 21:12:30

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