首页 > 解决方案 > 如何编写一个grafana简单的json到python中的json表查询

问题描述

如何将该数据(json)转换为pandas Dataframe,以便它可以将“键”作为列填充,将“值”作为grafana简单json中的行填充到动态表格中。实际上,它不是一个完美的数组格式我如何操纵它作为数据框工作?帮助将不胜感激。

data = {"name":"john","class":"fifth"}
       {"name":"emma","class":"sixth"}

无论我们有多少 json,我都想动态地将键填充为列和行作为值。

标签: pythonjsonpandasdataframegrafana

解决方案


您可以使用该pandas.DataFrame.from_dict(data)方法。文档

一个示例可能如下所示:

import pandas as pd
data = [{"name":"john","class":"fifth"},
       {"name":"emma","class":"sixth"}]
df = pd.DataFrame.from_dict(data)

结果:

   class  name
0  fifth  john
1  sixth  emma

在这种情况下,数据已经是一个字典列表(我假设这就是您在问题中的意思)。如果您在 JSON-Strings/Files 中有数据,则可以使用json模块json.loads(data_string)中的/ 。json.load(data_file)

更新

对于像这样的grafana表数据结构:

data = [
  {
    "columns":[
      {"text":"Time","type":"time"},
      {"text":"Country","type":"string"},
      {"text":"Number","type":"number"}
    ],
    "rows":[
      [1234567,"SE",123],
      [1234567,"DE",231],
      [1234567,"US",321]
    ],
    "type":"table"
  }
]

可以创建熊猫数据框:

keys = [d['text'] for d in data[0]['columns']]
pd.DataFrame(data=data[0]['rows'], columns=keys)

对于这样的结果:

   Time     Country  Number
0  1234567  "SE"     123
1  1234567  "DE"     231
2  1234567  "US"     312

推荐阅读