如何用Python Pandas将24小时制时间范围转换为12小时制AM/PM格式
错误原因
datetime.strptime属于Python标准库方法,仅支持传入单个字符串参数,无法直接处理Pandas Series(整列数据),因此触发类型错误。pd.to_datetime返回的是Pandas Datetime格式的Series,调用时间相关方法需要通过.dt访问器,直接访问.datetime属性不存在,因此触发属性错误。
可行解决方案
import pandas as pd # 原有拆分代码保持不变 df[['start', 'end']] = df.Time.str.split("-", expand=True) # 1. 将两列转换为Pandas datetime类型,指定格式可避免自动解析异常 df['start'] = pd.to_datetime(df['start'], format='%H:%M:%S') df['end'] = pd.to_datetime(df['end'], format='%H:%M:%S') # 2. 输出12小时制格式的时间字符串(通过.dt访问器调用strftime) print(df['start'].dt.strftime('%I:%M %p')) # 若需要直接将列存储为格式化后的字符串,直接赋值即可 df['start_formatted'] = df['start'].dt.strftime('%I:%M %p') df['end_formatted'] = df['end'].dt.strftime('%I:%M %p')
如果不需要保留原始datetime类型,也可以一步完成转换:
df['start_formatted'] = pd.to_datetime(df['start'], format='%H:%M:%S').dt.strftime('%I:%M %p')
内容的提问来源于stack exchange,提问作者Kadesia Durham
相关产品推荐
相关产品推荐

