我有一个普通的pandas TimeSeries,我想存放在MongoDB中。对象ts看起来像这样:
>ts
2013-01-01 00:00:00 456.852985
2013-01-01 01:00:00 656.015532
2013-01-01 02:00:00 893.159043
...
2013-12-31 21:00:00 1116.526471
2013-12-31 22:00:00 1124.903600
2013-12-31 23:00:00 1065.315890
Freq: H, Length: 8760, dtype: float64
我想将其转换为JSON文档数组,其中一个文档是一行,以将其存储在MongoDB中。像这样:
[{"index": 2013-01-01 00:00:00, "col1": 456.852985},
{"index": 2013-01-01 01:00:00, "col1": 656.015532},
{"index": 2013-01-01 02:00:00, "col1": 893.159043},
...
]
我一直在调查TimeSeries.to_json()' orient'选项,但我不能看到他们获得这种格式的方式。有没有一种在pandas中执行此操作的简单方法,还是应该寻找使用外部JSON库创建此结构的方法?
答案 0 :(得分:2)
一种方法是使其成为reset_index
的框架,以便使用record orient of to_json
:
In [11]: df = s.reset_index(name='col1')
In [12]: df
Out[12]:
index col1
0 2013-01-01 00:00:00 456.852985
1 2013-01-01 01:00:00 656.015532
2 2013-01-01 02:00:00 893.159043
In [13]: df.to_json(orient='records')
Out[13]: '[{"index":"2013-01-01 00:00:00","col1":456.852985},{"index":"2013-01-01 01:00:00","col1":656.015532},{"index":"2013-01-01 02:00:00","col1":893.159043}]'
答案 1 :(得分:0)
在每个文档中使用一行效率非常低 - 在空间和查询性能方面。
如果您对架构有灵活性,我们已经开放了一个库,可以在MongoDB中轻松存储pandas(和其他数字数据):