如何编写一个grafana简单的json到python中的json表查询
Posted
技术标签:
【中文标题】如何编写一个grafana简单的json到python中的json表查询【英文标题】:how to write a grafana simple json to table query from a json in python 【发布时间】:2019-05-07 14:42:28 【问题描述】:如何将该数据(json)转换为pandas Dataframe,以便它可以将“键”作为列填充,将“值”作为grafana简单json中的行填充到动态表格中。实际上,它不是一个完美的数组格式我如何操纵它作为数据框工作?帮助将不胜感激。
data = "name":"john","class":"fifth"
"name":"emma","class":"sixth"
无论我们有多少 json,我都想动态地将键填充为列和行作为值。
【问题讨论】:
数据变量似乎不是有效的 json 或 python dict。你是说data = [ "name": "john", "class": "fifth", "name": "emma","class":"sixth"]
@sarbot 第一个 JSON 对象后没有逗号。如何将这些多个 json 合并为一个 json 并从中生成一个数据框作为键作为列,将值作为行?
我认为应该有.. 我不是 json 专家,但它不是有效的 python(我认为也没有有效的 json)。你从哪里得到的 json 数据?是否要加载许多 json 对象或文件?比我会在我的答案中添加一个代码示例
【参考方案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-Strings/Files 中有数据,您可以使用来自 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
【讨论】:
在您的代码中,json 是 ina 结构,但在我的情况下,我有多个 json 对象。每个 json 对象后我没有逗号 我从来没有用过grafana,你是把数据读成字符串还是从文件中读取。对象是否由换行符分隔?比你可以简单地使用data.split('\n')
或 readlines()
文件...
grafana 格式应该是这样的 grafana.com/plugins/grafana-simple-json-datasource 在该链接中检查 json 到表格格式
好的,所以你的数据比你的问题中给出的要多得多。我想我现在得到了你的“问题”;)
再次更新了答案,如果这不是您想要的,您需要给我一个完整的输入数据示例和您要创建的最终数据框(表)。以上是关于如何编写一个grafana简单的json到python中的json表查询的主要内容,如果未能解决你的问题,请参考以下文章
如何在 grafana 中使用状态面板?或建议最佳可视化收费