首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将tempodb DataSet转换为实际数字并获得时间戳?

如何将tempodb DataSet转换为实际数字并获得时间戳?
EN

Stack Overflow用户
提问于 2014-03-31 03:23:50
回答 2查看 110关注 0票数 2

我使用以下代码从tempodb数据库读取值:

代码语言:javascript
复制
import datetime
from tempodb import Client

client = Client("key", "secret")

start = datetime.datetime(2014, 3, 28)
end = datetime.datetime(2014, 3, 29)
data = client.read_key("custom", start, end, interval="1hour", function="mean")
print data

代码工作正常,并获得数据点。但是,它以'DataSet'格式获得它们,这是TempoDB对数据点的格式。但是他们没有展示如何将这种格式转换成实际的坐标或数字。下面是代码返回的数据:

代码语言:javascript
复制
{'series': <tempodb.base.Series object at 0x2500df0>, 
'summary': <tempodb.base.Summary object at 0x250acb0>, 
'end': datetime.datetime(2014, 3, 29, 0, 0, tzinfo=tzutc()), 
'data': [<tempodb.base.DataPoint object at 0x250a2b0>, 
<tempodb.base.DataPoint object at 0x250a270>, 
<tempodb.base.DataPoint object at 0x250aa50>, 
<tempodb.base.DataPoint object at 0x250a9f0>, 
<tempodb.base.DataPoint object at 0x250aad0>, 
<tempodb.base.DataPoint object at 0x250ab30>, 
<tempodb.base.DataPoint object at 0x250ab90>, 
<tempodb.base.DataPoint object at 0x250abf0>, 
tempodb.base.DataPoint object at 0x250ac50>], 
'start': datetime.datetime(2014, 3, 28, 0, 0, tzinfo=tzutc())}

有人知道如何将此格式(DataSet)转换为实际坐标吗?

编辑:

以下是我的当前代码:

代码语言:javascript
复制
import datetime
from tempodb import Client

client = Client("key", "secret")

start = datetime.datetime(2014, 3, 28)
end = datetime.datetime(2014, 3, 29)
data = client.read_key("custom", start, end, interval="1hour", function="mean")
print data      
for point in data['data']:
        print(point.value)

这将使用TypeError输出以下内容

代码语言:javascript
复制
{'series': <tempodb.base.Series object at 0x15dae30>, 'summary': <tempodb.base.Summary object at 0x15e4d30>, 'end': datetime.datetime(2014, 3, 29, 0, 0, tzinfo=tzutc()), 'data': [<tempodb.base.DataPoint object at 0x15e4910>, <tempodb.base.DataPoint object at 0x15e42d0>, <tempodb.base.DataPoint object at 0x15e4ab0>, <tempodb.base.DataPoint object at 0x15e4ad0>, <tempodb.base.DataPoint object at 0x15e4b70>, <tempodb.base.DataPoint object at 0x15e4bd0>, <tempodb.base.DataPoint object at 0x15e4c10>, <tempodb.base.DataPoint object at 0x15e4c70>, <tempodb.base.DataPoint object at 0x15e4cd0>], 'start': datetime.datetime(2014, 3, 28, 0, 0, tzinfo=tzutc())}
Traceback (most recent call last):
  File "readtempo.py", line 10, in <module>
    for point in data['data']:
TypeError: 'DataSet' object has no attribute '__getitem__'
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-31 03:29:02

根据tempodb python客户机源代码,您可以使用ts属性:

代码语言:javascript
复制
for point in data.data:
    print(point.ts.isoformat())

还可以检查json()方法。

希望这能有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2014-04-03 20:54:18

正如@alecxe所提到的,请确保您正在迭代该格式

代码语言:javascript
复制
for point in data.data:

TempoDB的DataSet类由两个对象组成: ts (时间戳)和value (点值)。若要访问时间戳和值:

代码语言:javascript
复制
print point.ts.strftime("%b %e, %Y")
print point.value

最近,我在芝加哥使用TempoDB进行了一个数据挑战,分析了750,000行自行车使用情况数据。项目结果是这里和GitHub源代码,其中包括TempoDB和这里的TempoDB接口。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22753141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档