【问题标题】:Pandas Change time string in a column to 24 hour time formatPandas 将列中的时间字符串更改为 24 小时时间格式
【发布时间】:2021-06-22 08:00:03
【问题描述】:

大家好,我有一个 df['TimeEnd'] 列,其中这些是字符串值,我正在尝试将它们转换为 24 小时时间格式。最简单的方法是什么?

Time End  Counts
1058PM    56
0501PM    26
1145PM    24
1125PM    24
0605PM    20

【问题讨论】:

    标签: python pandas time


    【解决方案1】:

    to_datetimeSeries.dt.strftime 一起使用:

    df['Time End'] = pd.to_datetime(df['Time End'], format='%I%M%p').dt.strftime('%H:%M')
    print (df)
      Time End  Counts
    0    22:58      56
    1    17:01      26
    2    23:45      24
    3    23:25      24
    4    18:05      20
    

    如果存在错误值,例如 1300PM 添加 errors='coerce' 以获取错误值,如果不匹配,则转换为使用 H(24H 格式)而不是 I(12H 格式)的格式,并通过解析的日期时间替换可能的错误值d2:

    print (df)
      Time End  Counts
    0   1300PM      56
    1   0501PM      26
    2   1145PM      24
    3   1125PM      24
    4   0605PM      20
    
    d1 = pd.to_datetime(df['Time End'], format='%I%M%p', errors='coerce')
    d2 = pd.to_datetime(df['Time End'], format='%H%M%p', errors='coerce')
    
    df['Time End'] = d1.fillna(d2).dt.strftime('%H:%M')
    
    
    print (df)
      Time End  Counts
    0    13:00      56
    1    17:01      26
    2    23:45      24
    3    23:25      24
    4    18:05      20
    

    【讨论】:

    • 谢谢,但我收到此错误 ValueError: time data '1300PM' does not match format '%I%M%p' (match)
    • @DDM - 嗯,所以这意味着1300PM 不正确?因为 corerct 应该是 0100PM for 13:00
    猜你喜欢
    • 2011-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多