Pandas DataFrame日期时间索引无法在JSON转换和重新转换后幸免

L1m*_*eta 6 python datetime json pandas

我有以下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
Run Code Online (Sandbox Code Playgroud)

由于某种原因,运行此命令将返回:

<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
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释发生了什么以及如何使索引在整个转换过程中持续存在吗?

chr*_*isb 5

此处的错误是默认情况下会以默认值to_json以ms分辨率保存日期为ms的日期,而to_datetime默认情况下以ns分辨率保存日期。要修复,可以使用其中任何一个(但不能同时使用两者!)。

pd.to_datetime(df.index, unit='ms')
#OR
data_json = data.to_json(date_unit='ns')
Run Code Online (Sandbox Code Playgroud)

如评论中所述,您还可以将json和日期保存为iso格式。