Python如何将object类型日期列移除时间后转换为datetime格式
实现方法
这里提供两种经过验证的可行方案,可根据你的实际需求选择:
方案1:先截断时间字符串再转换(更稳定,推荐)
该方案先把字符串中日期后的所有内容统一移除,再做格式转换,不会受后续时间格式变化影响:
# 第一步:按第一个冒号分割字符串,仅保留前面的日期部分 df['Transaction_date'] = df['Transaction_date'].str.split(':', n=1).str[0] # 第二步:指定格式转换为datetime类型 df['Transaction_date'] = pd.to_datetime(df['Transaction_date'], format="%m/%d/%Y")
转换后Transaction_date列的类型为datetime64[ns],时间部分默认重置为00:00:00,完全不影响日期的使用和计算。
方案2:直接转换后剥离时间部分
如果不想修改原始字符串,也可以利用pandas的自动格式识别能力直接转换,再移除时间部分:
# 自动识别混合格式转换为datetime类型 df['Transaction_date'] = pd.to_datetime(df['Transaction_date'], infer_datetime_format=True) # 仅保留日期:选择对应方法即可 ## 方法A:保留datetime64类型,时间部分重置为0(适合后续需要做日期运算的场景) df['Transaction_date'] = df['Transaction_date'].dt.normalize() ## 方法B:转换为Python原生date对象,完全无时间信息(适合仅需展示的场景) # df['Transaction_date'] = df['Transaction_date'].dt.date
注意:如果你的数据中存在无效日期格式,可在
pd.to_datetime方法中加入errors='coerce'参数,将无法识别的内容转换为空值NaT,避免转换报错。
内容的提问来源于stack exchange,提问作者alwayzconfused
相关产品推荐
相关产品推荐

