+-

我有以下 Python代码片段:
import pandas as pd
# print normal index
print data.index
# convert from df to JSON and back
data_json = data.to_json()
df = pd.read_json(data_json)
df.index = pd.to_datetime(df.index)
print df.index
由于某种原因,运行此返回:
<class 'pandas.tseries.index.DatetimeIndex'>
[1950-01-03 00:00:00, ..., 2014-08-21 00:00:00]
Length: 16264, Freq: None, Timezone: None
<class 'pandas.tseries.index.DatetimeIndex'>
[1966-10-31 00:00:00, ..., 2001-09-07 00:00:00]
Length: 16264, Freq: None, Timezone: None
有人可以向我解释发生了什么,以及如何通过转换保持索引?
最佳答案
这里的错误是to_json通过默认值以ms分辨率保存日期,而to_datetime默认情况下以纳秒分辨率转换.要修复,其中任何一个(但不是两个!)都可以.
pd.to_datetime(df.index, unit='ms')
#OR
data_json = data.to_json(date_unit='ns')
如注释中所述,您也可以使用iso格式的日期保存json.
点击查看更多相关文章
转载注明原文:python – Pandas DataFrame日期时间索引不能在JSON转换和重新转换后继续存在 - 乐贴网