Pandas序列化JSON时如何移除日期对象中的时间部分
解决Pandas日期格式化时的AttributeError问题
错误原因
你遇到的AttributeError是因为当前result['date']列不是datetime类型(大概率是之前的操作把它转换成了字符串/object类型),而.dt访问器只能用于datetime-like的列。
具体解决方法
方法1:先转回datetime类型再格式化
如果你的date列已经是带时间的字符串格式(比如"2023-04-27 00:00:00"),先把它转成datetime类型,再用strftime格式化:
import pandas as pd # 第一步:将字符串列转换为datetime类型 result['date'] = pd.to_datetime(result['date']) # 第二步:格式化为纯日期字符串 result['date'] = result['date'].dt.strftime('%Y-%m-%d')
方法2:直接在JSON序列化时指定日期格式
如果你的目标是生成API用的JSON响应,不用手动修改DataFrame,直接用Pandas的to_json方法指定日期格式更高效:
# 生成JSON时自动把日期转成YYYY-MM-DD格式 json_response = result.to_json(orient='records', date_format='iso', date_unit='D')
date_unit='D'会强制只保留日期部分,输出就是"2023-04-28"这种纯日期格式。
方法3:提取date对象再转字符串
如果列本身已经是datetime类型,也可以直接提取date对象再转成字符串:
result['date'] = result['date'].dt.date.astype(str)
内容的提问来源于stack exchange,提问作者Anuj TBE
相关产品推荐
相关产品推荐

