pandas转换日期时始终得到object dtype 要求输出无时间格式
类型为object的核心原因
pd.to_datetime(df_support_HCM['CLOSE_DATE']).dt.date返回的是Python标准库的datetime.date对象,pandas存储这类非原生标量的数组时,默认会将列类型标记为object。
对应解决方案
按实际需求选择即可:
- 保留pandas原生日期时间类型(无object类型问题),仅忽略时间部分的业务逻辑影响
使用dt.normalize()方法,该方法会将时间部分统一重置为00:00:00,列类型保持为pandas原生datetime64[ns],不会变为object:
若需要展示时不显示df_support_HCM['CLOSE'] = pd.to_datetime(df_support_HCM['CLOSE_DATE']).dt.normalize()00:00:00后缀,可在打印输出前配置pandas日期展示格式。 - 直接存储纯日期值,且列类型不为object
pandas 1.0及以上版本提供专属扩展日期类型DateDtype,可直接存储无时间的日期值:df_support_HCM['CLOSE'] = pd.to_datetime(df_support_HCM['CLOSE_DATE']).dt.floor('D').astype('Date') - 仅需要纯日期字符串用于展示,无需后续日期运算
直接转换为指定格式的字符串即可:df_support_HCM['CLOSE'] = pd.to_datetime(df_support_HCM['CLOSE_DATE']).dt.strftime('%Y-%m-%d')
内容的提问来源于stack exchange,提问作者Deke Marquardt
相关产品推荐
相关产品推荐

