如何使用 Pandas (Python) 将时间从 24 小时格式转换为 12 小时格式 (AM/PM)

How to Convert Time from 24 hour format to 12 hour format (AM/PM) with Pandas (Python)

我已经阅读了几篇文章,但建议的解决方案对我的情况没有帮助。在我的数据框中,我有一个标题为“时间”的列,其中包含时间范围值,例如“10:30:00-11:30:00”。为了适当地转换时间,我认为最好用分隔符“-”将列拆分为“开始”和“结束”列。完成后,我尝试在一列上使用以下内容使其工作:

df[['start', 'end']] = df.Time.str.split("-", expand = True)

df['start']  = datetime.strptime(df['start'], '%H:%M:%S')

print(df['start'].strftime('%I:%M %p'))

错误信息:

TypeError: strptime() argument 1 must be str, not Series

“开始”和“结束”的数据类型都是object,从我读到的字符串和object基本上是一个。

我也试过:

df['start'] = pd.to_datetime(df['start']).datetime.strftime('%I:%M %p')

错误信息:

AttributeError: 'Series' object has no attribute 'datetime'

如有任何帮助,我们将不胜感激!

您可以在 pd.to_datetime 中使用“格式”参数。 浏览器

pd.to_datetime(df['start'], format='%I:%M %p')

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.to_datetime.html

https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior

根据最后一行代码尝试使用 .dt 而不是 .datetime

df['start'] = pd.to_datetime(df['start']).dt.strftime('%I:%M %p')

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.dt.html