如何解决Pandas中sort_values后pd.to_datetime转JSON格式异常?
解决Pandas DataFrame转JSON时日期变为时间戳的问题
我之前也碰到过一模一样的情况!Pandas默认会把datetime对象序列化成毫秒级的Unix时间戳,这就是你看到那些长串数字的原因。好在解决起来很简单,给你两种实用方案:
方案1:直接在to_json()里指定日期格式
只需要给to_json()方法加个date_format参数,就能让日期输出成可读性强的字符串:
输出ISO 8601格式(推荐)
这种格式是通用的标准日期字符串,兼容性最好:
bot5 = data.sort_values('Amount', ascending=True)[['Time','Region','Amount','Class']].tail(N).reset_index() print(bot5.to_json(orient='records', date_format='iso'))
输出示例会变成:
[{"Time":"2014-07-08T00:00:00Z","Amount":25691.16,"Region":"south"},...]
自定义日期格式
如果想要更贴合需求的格式(比如YYYY-MM-DD),直接把格式字符串传给date_format就行:
print(bot5.to_json(orient='records', date_format='%Y-%m-%d'))
输出的日期就会是"2014-07-08"这样的形式。
方案2:先把datetime列转成字符串再转JSON
如果需要更精细的格式控制(比如带时分秒的YYYY-MM-DD HH:MM:SS),可以先把datetime列手动转换成字符串,再导出JSON:
# 先将Time列转成指定格式的字符串 bot5['Time'] = bot5['Time'].dt.strftime('%Y-%m-%d %H:%M:%S') # 再导出JSON print(bot5.to_json(orient='records'))
注意:两种方案都需要确保你的Time列已经是datetime类型(你已经用pd.to_datetime()处理过,这一步没问题)。
内容的提问来源于stack exchange,提问作者sujithra deepak
相关产品推荐
相关产品推荐

