【发布时间】:2021-06-22 08:00:03
【问题描述】:
大家好,我有一个 df['TimeEnd'] 列,其中这些是字符串值,我正在尝试将它们转换为 24 小时时间格式。最简单的方法是什么?
Time End Counts
1058PM 56
0501PM 26
1145PM 24
1125PM 24
0605PM 20
【问题讨论】:
大家好,我有一个 df['TimeEnd'] 列,其中这些是字符串值,我正在尝试将它们转换为 24 小时时间格式。最简单的方法是什么?
Time End Counts
1058PM 56
0501PM 26
1145PM 24
1125PM 24
0605PM 20
【问题讨论】:
将to_datetime 与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
【讨论】:
1300PM 不正确?因为 corerct 应该是 0100PM for 13:00