正在尝试使用json_normalize从OpenTSDB导入数据。不知怎么的,它适用于大多数字段,除了每个时间戳的值。
我试着改变不同的设置,甚至在时间序列结束时的.T,我在这里的某个地方得到。尽管如此,这并没有帮助。
import pandas as pd
from pandas.io.json import json_normalize
data = {
"metric": "peer.traffic.in",
"tags": {"site": "site1", "peer": "peer1"},
"aggregateTags": [],
"dps": {"1561953835": 19565.66015625, "1561954125": 19012.55078125, "1561954439": 17274.669921875, "1561954728": 19151.75, "1561955039": 17603.23046875, "1561955329": 17056.1796875, "1561955641": 16232.349609375, "1561955928": 17016.48046875, "1561956241": 16023.0498046875, "1561956533": 15529.1298828125, "1561956847": 14976.080078125, "1561957126": 14557.6796875}
}
df = json_normalize(data, record_path=['dps'], meta=['metric',['tags','site'],['tags','peer']])
print (df)输出:
0 metric tags:site tags:peer
0 1561953835 peer.traffic.in site1 peer1
1 1561954125 peer.traffic.in site1 peer1
2 1561954439 peer.traffic.in site1 peer1
3 1561954728 peer.traffic.in site1 peer1
4 1561955039 peer.traffic.in site1 peer1
5 1561955329 peer.traffic.in site1 peer1
6 1561955641 peer.traffic.in site1 peer1
7 1561955928 peer.traffic.in site1 peer1
8 1561956241 peer.traffic.in site1 peer1
9 1561956533 peer.traffic.in site1 peer1
10 1561956847 peer.traffic.in site1 peer1
11 1561957126 peer.traffic.in site1 peer1我希望在dps表的表中看到要显示的值。
发布于 2019-08-13 16:39:26
根据json_normalize的说法,record_path不能将字典作为输入处理。您需要提供适当的数据格式:
import pandas as pd
from pandas.io.json import json_normalize
data = {
"metric": "peer.traffic.in",
"tags": {"site": "site1", "peer": "peer1"},
"aggregateTags": [],
"dps": {"1561953835": 19565.66015625, "1561954125": 19012.55078125, "1561954439": 17274.669921875, "1561954728": 19151.75, "1561955039": 17603.23046875, "1561955329": 17056.1796875, "1561955641": 16232.349609375, "1561955928": 17016.48046875, "1561956241": 16023.0498046875, "1561956533": 15529.1298828125, "1561956847": 14976.080078125, "1561957126": 14557.6796875}
}
# convert dict values into list
data['dps'] = [str(i) for i in list(data.get('dps').values())]
df = json_normalize(data=data, record_path='dps', meta=['metric',['tags','site'],['tags','peer']])输出:
0 metric tags.site tags.peer
0 19565.66015625 peer.traffic.in site1 peer1
1 19012.55078125 peer.traffic.in site1 peer1
2 17274.669921875 peer.traffic.in site1 peer1
3 19151.75 peer.traffic.in site1 peer1
4 17603.23046875 peer.traffic.in site1 peer1
5 17056.1796875 peer.traffic.in site1 peer1
6 16232.349609375 peer.traffic.in site1 peer1
7 17016.48046875 peer.traffic.in site1 peer1
8 16023.0498046875 peer.traffic.in site1 peer1
9 15529.1298828125 peer.traffic.in site1 peer1
10 14976.080078125 peer.traffic.in site1 peer1
11 14557.6796875 peer.traffic.in site1 peer1https://stackoverflow.com/questions/57466352
复制相似问题