Pandas to_datetime 未以所需格式(dd/mm/YYYY HH:MM:SS AM/PM)格式化日期时间值

Posted

技术标签:

【中文标题】Pandas to_datetime 未以所需格式(dd/mm/YYYY HH:MM:SS AM/PM)格式化日期时间值【英文标题】:Pandas to_datetime is not formatting the datetime value in the desired format (dd/mm/YYYY HH:MM:SS AM/PM) 【发布时间】:2018-04-06 09:53:53 【问题描述】:

我有以下格式的日期时间值

    2017-09-11 01:18:38
    2017-09-11 01:34:30
    2017-09-11 05:03:57
    2017-09-11 09:55:48
    2017-09-11 09:59:10
    2017-09-11 12:09:05

我必须以 dd/mm/YYYY HH:MM:SS AM/PM: 格式显示值:

    11/09/2017  01:18:38 AM
    11/09/2017  01:34:30 AM
    11/09/2017  05:03:57 AM
    11/09/2017  09:55:48 AM
    11/09/2017  09:59:10 AM
    11/09/2017  12:09:05 PM
    11/09/2017  12:08:16 PM

我正在使用以下代码来执行此操作,但它不会改变格式

data_f1['Reported Date'] = pd.to_datetime(data_f1['Reported Date'], 
   format="%m/%d/%Y %I:%M:%S %p")

【问题讨论】:

【参考方案1】:

给定一个字符串列,使用pd.to_datetime 将其转换为日期时间对象列。

给定一个已经存在的日期时间列,使用dt.strftime 将其转换为特定格式的字符串列。

这就是它的工作方式,你无法改变它。

df

                 date
0 2017-09-11 01:18:38
1 2017-09-11 01:34:30
2 2017-09-11 05:03:57
3 2017-09-11 09:55:48
4 2017-09-11 09:59:10
5 2017-09-11 12:09:05

df.date.dt.strftime("%m/%d/%Y %I:%M:%S %p")

0    09/11/2017 01:18:38 AM
1    09/11/2017 01:34:30 AM
2    09/11/2017 05:03:57 AM
3    09/11/2017 09:55:48 AM
4    09/11/2017 09:59:10 AM
5    09/11/2017 12:09:05 PM
Name: date, dtype: object

请注意,更改 datetime 列的表示没有用,因为它们是 datetime 对象,并且由他们的类的__repr__ 方法定义自己的表示。

【讨论】:

我无法更改日期时间对象的格式,因为我需要将此值传递给 excel,它本身必须采用这种格式,但是如果我使用 strftime,它将通过值作为 excel 的字符串而不是时间对象 @JitendraAswani 当您将日期写入 excel 时,它会以字符串形式写入......请考虑一下。如果您是 pandas 的核心开发人员,您可以执行“更改日期的 repr”。否则,......你想要的是strftime @MaxU 你是对的......那会更好......不幸的是在写答案时不知道这个excel业务(问题中没有提到)。 @JitendraAswani 好的。你没有在问题中提到 excel,所以我的回答没有谈到 excel。但是,如果您坚持这一点,请查看 MaxU 提供的链接,并在编写数据帧时使用pd.ExcelWriter 并传递datetime_format="%m/%d/%Y %I:%M:%S %p"。我们通常不愿意将不相关的问题与您在 cmets 中的主要问题联系起来,但我会帮助您解决这个问题。 @JitendraAswani,请考虑 accepting 一个答案,因为它回答了您的原始问题

以上是关于Pandas to_datetime 未以所需格式(dd/mm/YYYY HH:MM:SS AM/PM)格式化日期时间值的主要内容,如果未能解决你的问题,请参考以下文章

列表到字典并以所需格式打印

以所需格式列出 maven 项目的依赖项

有没有办法以所需的格式加入这两个表?

使用 pandas.to_datetime 转换时指定日期格式

为啥 pandas.to_datetime 对于非标准时间格式(例如“2014/12/31”)很慢

pandas使用to_datetime函数将unix时间戳转化为日期时间格式(Convert Unix times to DateTime)