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

Posted

技术标签:

【中文标题】Pandas - 将日期列从 dd/mm/yy hh:mm:ss 转换为 yyyy-mm-dd hh:mm:ss【英文标题】:Pandas - Converting date column from dd/mm/yy hh:mm:ss to yyyy-mm-dd hh:mm:ss 【发布时间】:2019-01-14 10:21:51 【问题描述】:

我有一个数据框 (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 转换为任何格式,但它将列转换为字符串,而不是日期时间。 @KenSyme,感谢您的回复。我正在尝试返回日期列值.. 你的to_datetime 行不适合吗?你有错误吗?你得到了什么输出,你期望得到什么? 【参考方案1】:

如果您知道您的列中将有一致的格式,您可以将其传递给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)

【讨论】:

【参考方案2】:

你可以这样做:

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

【讨论】:

以上是关于Pandas - 将日期列从 dd/mm/yy hh:mm:ss 转换为 yyyy-mm-dd hh:mm:ss的主要内容,如果未能解决你的问题,请参考以下文章

Excel 日期值检索为 DD/MM/YY,如何将其格式化为 YYYY-MM-DD?

如何将 Django 日期格式更改为 dd/mm/yy?

SQL日期格式转换? [dd.mm.yy 到 YYYY-MM-DD]

在java中将dateTime转换为dd/MM/yy格式的日期

JXDatePicker 使用 SimpleDateFormat 将 dd.MM.yy 格式化为当前世纪的 dd.MM.yyyy

将字符串dd / mm / yy转换为datetime