如何将数据(json)转换为pandas Dataframe,以便可以在grafana简单json中将“键”填充为列,将“值”填充为行,以动态表。实际上,它不是完美的数组格式,我如何操纵它作为数据框?帮助将不胜感激。
data = {"name":"john","class":"fifth"}
{"name":"emma","class":"sixth"}
无论我们有多少个json,我都希望动态地将键填充为列和行作为值。
答案 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