Pandas 将列中的时间字符串更改为 24 小时时间格式

Pandas Change time string in a column to 24 hour time format

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

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

使用to_datetime with Series.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