Pandas将DataFrame保存并读取到json

2024-09-30 20:20:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将一个包含一些日期的pandas数据帧保存到json中,然后将其读回。虽然当我从json读回数据时,我得到的日期格式不同(大多数情况下需要再次解析日期)。在

import pandas as pd
df = pd.Series(range(7),pd.date_range('2014-10-01','2014-10-07')).reset_index()
df.columns = ['LoadDate','number']
print df

    LoadDate  number
0 2014-10-01       0
1 2014-10-02       1
2 2014-10-03       2
3 2014-10-04       3
4 2014-10-05       4
5 2014-10-06       5
6 2014-10-07       6

现在,如果我要导出到并返回读数,我将得到以下结果(不需要)

^{pr2}$

我想把日期原样读回。我怎样才能做到这一点?在

有趣的部分来了。在

df.columns = ['date','number']
print pd.read_json(df.to_json())

        date  number
0 2014-10-01       0
1 2014-10-02       1
2 2014-10-03       2
3 2014-10-04       3
4 2014-10-05       4
5 2014-10-06       5
6 2014-10-07       6

如果我将列的名称改为“date”,就可以了!当然,我希望能够将这个专栏称为与date不同的名称,所以我仍然对如何管理这个问题感兴趣。非常感谢!(我正在使用熊猫0.15.0!)在


Tags: columns数据import名称jsonnumberpandasdf
1条回答
网友
1楼 · 发布于 2024-09-30 20:20:59

首先,使用to_json时得到这些数字的原因。docstring表示“datetime对象将转换为UNIX时间戳”:

In [27]: df.to_json()
Out[27]: '{"LoadDate":{"0":1412121600000,"1":1412208000000,...}}'

因此,您看到的数字是unix epoch时间戳。但是有一个date_format参数,to_json也可以指定输出ISO格式的字符串:

^{pr2}$

第二,为什么read_json的解析不同。再次,从docstring

convert_dates : boolean, default True
List of columns to parse for dates; If True, then try to parse datelike columns default is True

默认情况下,这是真的,因此将尝试检测类似日期的列。显然,此检测还查看列名。但正如docstring所说,您还可以手动指定应将哪个列解析为日期:

In [25]: pd.read_json(df.to_json(), convert_dates=['LoadDate'])
Out[25]: 
    LoadDate  number
0 2014-10-01       0
1 2014-10-02       1
2 2014-10-03       2
3 2014-10-04       3
4 2014-10-05       4
5 2014-10-06       5
6 2014-10-07       6

相关问题 更多 >