如何从python中的json编写grafana简单json到表查询

时间:2018-12-05 23:21:05

标签: python json pandas dataframe grafana

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

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

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

1 个答案:

答案 0 :(得分:1)

您可以使用pandas.DataFrame.from_dict(data)方法。 Docs

一个例子可能像这样:

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字符串/文件中,则可以使用json module中的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