【问题标题】:Pandas to_datetime is not formatting the datetime value in the desired format (dd/mm/YYYY HH:MM:SS AM/PM)Pandas to_datetime 未以所需格式(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")

【问题讨论】:

    标签: python pandas datetime datetime-format


    【解决方案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 一个答案,因为它回答了您的原始问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-18
    • 1970-01-01
    • 2017-08-21
    • 2020-10-23
    • 1970-01-01
    • 1970-01-01
    • 2015-11-03
    相关资源
    最近更新 更多