首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将ceilometer输出转换为python数据帧

将ceilometer输出转换为python数据帧
EN

Stack Overflow用户
提问于 2015-10-30 00:56:28
回答 2查看 172关注 0票数 3

我对Python和openstack ceilometer还是个新手。我正在使用以下代码读取ceilometer数据:

代码语言:javascript
复制
import ceilometerclient.client

cclient = ceilometerclient.client.get_client(2, os_username="Ceilometeradmin", os_password="blahblah", os_tenant_name="blahblah", os_auth_url="http://xxx.xx.xx.x:5000/v2.0")

query = [dict(field='resource_id', op='eq', value='dd893564-85e5-43f8-a384-086417f1d82c')]

ls = cclient.meters.list(q=query)

(请参阅附件中的输出图片)

有人知道我怎么把它转换成数据帧吗?

我试过了:ls2 = pandas.DataFrame(ls, columns=["user_id", "name", "resource_id", "source", "meter_id", "project_id", "type", "unit"])

但会得到以下错误:

代码语言:javascript
复制
Traceback (most recent call last):
File "", line 1, in File "/usr/lib/python2.7/dist-packages/pandas/core/frame.py", line 250, in init copy=copy)
File "/usr/lib/python2.7/dist-packages/pandas/core/frame.py", line 363, in _init_ndarray return create_block_manager_from_blocks([values.T], [columns, index])
File "/usr/lib/python2.7/dist-packages/pandas/core/internals.py", line 3750, in create_block_manager_from_blocks construction_error(tot_items, blocks[0].shape[1:], axes, e)
File "/usr/lib/python2.7/dist-packages/pandas/core/internals.py", line 3732, in construction_error passed,implied))
ValueError: Shape of passed values is (1, 2), indices imply (8, 2)

如果有人能帮上忙,我将不胜感激..

谢谢

最好的祝福T

EN

回答 2

Stack Overflow用户

发布于 2015-10-30 20:17:19

在同事的帮助下,我们设法找到了解决方案。我将其张贴出来,以防对任何试图将ceilometer数据转换为数据帧的人有用。

代码语言:javascript
复制
ls2 = str(ls)[8:-2]
tmp = ls2.replace("u'","'")
tmp = tmp.replace("<Meter","")
tmp = tmp.replace("}>","}")
tmp= "["+tmp+"]"
tmp = tmp.replace("'", "\"")
parsed = json.loads(tmp)
ls3 = pandas.DataFrame(parsed)

替换了使其成为无效字典并转换为dataframe的字符

票数 1
EN

Stack Overflow用户

发布于 2015-11-14 21:59:51

代码语言:javascript
复制
meters = c.meters.list()
fields = ['user_id', 'name', 'resource_id', 'source', 'meter_id', 'project_id', 'type', 'unit']
converted_meters = [dict([(key, getattr(m, key, None))]) for m in meters for key in fields]
data_frame = pandas.DataFrame(converted_meters)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33420300

复制
相关文章

相似问题

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