我有以下JSON输出,如何以格式化表格格式从python代码中获取 clientHostname,clientId,completionTime,creationTime,status,retentionTime,fileCount 值。
> [{'attributes': [{'key': '*anchor save set time', 'values': ['158']}, {'key': '*backup start time', 'values': ['158790']}, {'key': '*policy action name', 'values': ['Server db backup: 158790']}, {'key': '*policy name', 'values': ['Server Protection: 158860']}, {'key': '*policy protection period', 'values': ['0: 1580']}, {'key': '*policy workflow name', 'values': ['Server backup: 15860']}, {'key': '*ss clone retention', 'values': [' 158760: 150: 186']}, {'key': 'group', 'values': ['Server Protection']}, {'key': 'saveset features', 'values': ['CLIENT_SAVETIME']}], 'browseTime': '2020-05-19T10:01:00+08:00', 'clientHostname': 'server.com', 'clientId': '52d79c1', 'completionTime': '2020-04-27T10:01:00+08:00', 'creationTime': '2020-04-21T10:01:00+08:00', 'fileCount': 2, 'id': '2b2d925f9c1', 'instances': [{'clone': False, 'id': '1587952860', 'status': 'Recoverable', 'volumeIds': ['444']}], 'level': '1', 'links': [{'href': 'https://server.com/backups/2b4c1', 'rel': 'item'}], 'name': 'index:b9c9dc1', 'retentionTime': '2020-05-18T23:59:59+08:00', 'saveTime': '2020-04-27T10:01:00+08:00', 'shortId': '1151745244', 'size': {'unit': 'Byte', 'value': 408}, 'type': 'File'}, {'attributes': [{'key': '*anchor save set time', 'values': ['1585706503']}, {'key': '*backup start time', 'values': ['1587952855']}, {'key': '*policy action name', 'values': ['Server db backup: 15855']}, {'key': '*policy name', 'values': ['Server Protection: 158795']}, {'key': '*policy protection period', 'values': ['0: 1585']}, {'key': '*policy workflow name', 'values': ['Server backup: 1587855']}, {'key': '*ss clone retention', 'values': [' 158755: 1587952855: 186']}, {'key': 'group', 'values': ['Server Protection']}, {'key': 'saveset features', 'values': ['CLIENT_SAVETIME']}], 'browseTime': '2020-05-18T10:00:55+08:00', 'clientHostname': 'server.com', 'clientId': '52d7ae9c1', 'completionTime': '2020-04-27T10:00:55+08:00', 'creationTime': '2020-04-27T10:00:55+08:00', 'fileCount': 2, 'id': '0b8ae9c1', 'instances': [{'clone': False, 'id': '1', 'status': 'Recoverable', 'volumeIds': ['446929344']}], 'level': '1', 'links': [{'href': 'https://server.com/backups/0b8a', 'rel': 'item'}], 'name': 'index:ec3df9c1', 'retentionTime': '2020-05-18T23:59:59+08:00', 'saveTime': '2020-04-27T10:00:55+08:00', 'shortId': '1168522455', 'size': {'unit': 'Byte', 'value': 408}, 'type': 'File'}]
答案 0 :(得分:0)
您可以这样做(首先将json数据加载到数据帧中):
`import pandas as pd`
`df = pd.DataFrame.from_records(x)`
`df[['clientHostname', 'clientId', 'completionTime', 'creationTime', 'retentionTime', 'fileCount']]`
这里x是您提供的json数据。
答案 1 :(得分:0)
尝试一下:
from pandas.io.json import json_normalize
import ast
js = [{'attributes': [{'key': '*anchor save set time', 'values': ['158']}, {'key': '*backup start time', 'values': ['158790']}, {'key': '*policy action name', 'values': ['Server db backup: 158790']}, {'key': '*policy name', 'values': ['Server Protection: 158860']}, {'key': '*policy protection period', 'values': ['0: 1580']}, {'key': '*policy workflow name', 'values': ['Server backup: 15860']}, {'key': '*ss clone retention', 'values': [' 158760: 150: 186']}, {'key': 'group', 'values': ['Server Protection']}, {'key': 'saveset features', 'values': ['CLIENT_SAVETIME']}], 'browseTime': '2020-05-19T10:01:00+08:00', 'clientHostname': 'server.com', 'clientId': '52d79c1', 'completionTime': '2020-04-27T10:01:00+08:00', 'creationTime': '2020-04-21T10:01:00+08:00', 'fileCount': 2, 'id': '2b2d925f9c1', 'instances': [{'clone': False, 'id': '1587952860', 'status': 'Recoverable', 'volumeIds': ['444']}], 'level': '1', 'links': [{'href': 'https://server.com/backups/2b4c1', 'rel': 'item'}], 'name': 'index:b9c9dc1', 'retentionTime': '2020-05-18T23:59:59+08:00', 'saveTime': '2020-04-27T10:01:00+08:00', 'shortId': '1151745244', 'size': {'unit': 'Byte', 'value': 408}, 'type': 'File'}, {'attributes': [{'key': '*anchor save set time', 'values': ['1585706503']}, {'key': '*backup start time', 'values': ['1587952855']}, {'key': '*policy action name', 'values': ['Server db backup: 15855']}, {'key': '*policy name', 'values': ['Server Protection: 158795']}, {'key': '*policy protection period', 'values': ['0: 1585']}, {'key': '*policy workflow name', 'values': ['Server backup: 1587855']}, {'key': '*ss clone retention', 'values': [' 158755: 1587952855: 186']}, {'key': 'group', 'values': ['Server Protection']}, {'key': 'saveset features', 'values': ['CLIENT_SAVETIME']}], 'browseTime': '2020-05-18T10:00:55+08:00', 'clientHostname': 'server.com', 'clientId': '52d7ae9c1', 'completionTime': '2020-04-27T10:00:55+08:00', 'creationTime': '2020-04-27T10:00:55+08:00', 'fileCount': 2, 'id': '0b8ae9c1', 'instances': [{'clone': False, 'id': '1', 'status': 'Recoverable', 'volumeIds': ['446929344']}], 'level': '1', 'links': [{'href': 'https://server.com/backups/0b8a', 'rel': 'item'}], 'name': 'index:ec3df9c1', 'retentionTime': '2020-05-18T23:59:59+08:00', 'saveTime': '2020-04-27T10:00:55+08:00', 'shortId': '1168522455', 'size': {'unit': 'Byte', 'value': 408}, 'type': 'File'}]
df = json_normalize(js)
df[['clone','id','status','volumeIds']] = df.instances.apply(lambda x: pd.Series(ast.literal_eval(str(x[0]))))
df:
attributes browseTime clientHostname clientId completionTime creationTime fileCount id instances level ... name retentionTime saveTime shortId type size.unit size.value clone status volumeIds
0 [{'key': '*anchor save set time', 'values': ['... 2020-05-19T10:01:00+08:00 server.com 52d79c1 2020-04-27T10:01:00+08:00 2020-04-21T10:01:00+08:00 2 1587952860 [{'clone': False, 'id': '1587952860', 'status'... 1 ... index:b9c9dc1 2020-05-18T23:59:59+08:00 2020-04-27T10:01:00+08:00 1151745244 File Byte 408 False Recoverable [444]
1 [{'key': '*anchor save set time', 'values': ['... 2020-05-18T10:00:55+08:00 server.com 52d7ae9c1 2020-04-27T10:00:55+08:00 2020-04-27T10:00:55+08:00 2 1 [{'clone': False, 'id': '1', 'status': 'Recove... 1 ... index:ec3df9c1 2020-05-18T23:59:59+08:00 2020-04-27T10:00:55+08:00 1168522455 File Byte 408 False Recoverable [446929344]
df[['clientHostname','clientId','completionTime','creationTime','status','retentionTime','fileCount']]
clientHostname clientId completionTime creationTime status retentionTime fileCount
0 server.com 52d79c1 2020-04-27T10:01:00+08:00 2020-04-21T10:01:00+08:00 Recoverable 2020-05-18T23:59:59+08:00 2
1 server.com 52d7ae9c1 2020-04-27T10:00:55+08:00 2020-04-27T10:00:55+08:00 Recoverable 2020-05-18T23:59:59+08:00 2