我有一个包含datetime对象的pandas数据框,当我使用sort_values对值进行排序时,它会进入正确的dateformat但是当我转换为JSON时,它会带有一些其他格式 Date":1404777600000
我使用 pd.to_datetime()
进行转化
bot5 = data.sort_values('Amount',ascending=True)[['Time','Region','Amount','Class']].tail(N).reset_index()
print(bot5.to_json(orient='records'))
[{ “日期”:1404777600000 “金额”:25691.16, “地区”: “南”},{ “日期”:1418083200000 “金额”:19656.53, “地区”: “南”},
答案 0 :(得分:0)
来自pandas文档:
日期转换类型。 epoch = epoch毫秒,iso = ISO8601。默认值取决于方向。对于orient ='table',默认为'iso'。对于所有其他方位,默认为'epoch'。
您正在使用records
orient,因此,默认情况下,pandas会将您的日期转换为纪元日期。您可以通过传递参数iso
:
date_format='iso'
df = pd.DataFrame({
'year': [2015, 2016],
'month': [2, 3],
'day': [4, 5],
'Amount': [25691.16, 19656.53],
'Region': ['south', 'south']
})
df['Date'] = pd.to_datetime(df[['year', 'month', 'day']])
(df[['Date', 'Amount', 'Region']]
.sort_values('Amount', ascending=True)
.to_json(orient='records', date_format='iso', date_unit='ns'))
# '[{"Date":"2016-03-05T00:00:00.000000000Z","Amount":19656.53,"Region":"south"},
# {"Date":"2015-02-04T00:00:00.000000000Z","Amount":25691.16,"Region":"south"}]'
默认情况下,还有一个问题to_datetime
转换为纳秒分辨率,但默认情况下to_json
以ms
分辨率保存日期,因此您需要传递正确的date_unit
参数(date_unit='ns'
)也是。