Pandas TimeSeries进入MongoDB

时间:2014-03-20 22:52:26

标签: python json mongodb pandas time-series

我有一个普通的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库创建此结构的方法?

2 个答案:

答案 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(和其他数字数据):

https://github.com/manahl/arctic