执行以下命令时出现ValueError错误
df = pd.DataFrame.from_dict(
json_normalize(
data,
'protocol_parameters',
[['status','status'],
'auto_discovered',
'average_eps',
'creation_date',
'description',
'last_event_time',
'name']
), orient='columns')
代码中使用的数据对象
{
"protocol_parameters": [
{
"name": "identifier",
"value": "x.x.x.x"
},
{
"name": "incomingPayloadEncoding",
"value": "UTF-8"
}
],
"description": "LinuxServer device",
"average_eps": 0,
"creation_date": 0,
"name": "LinuxServer @ x.x.x.x",
"auto_discovered": true,
"last_event_time": 1535539535018,
"status": {
"status": "SUCCESS"
}
},
错误消息(我想是因为名称字段位于'protocol_parameters'中,并且也是一个单独的对象。但是我无法解决此问题
Traceback (most recent call last):
File "D:\Qradar\python\LogSources.py", line 31, in <module>
df = pd.DataFrame.from_dict(json_normalize(data,'protocol_parameters',[['status','status'],'auto_discovered','average_eps','creation_date','description','last_event_time','name']), orient='columns')
File "D:\VM\python\lib\site-packages\pandas\io\json\normalize.py", line 262, in json_normalize
'need distinguishing prefix ' % k)
ValueError: Conflicting metadata name name, need distinguishing prefix
答案 0 :(得分:2)
关闭,您需要做的就是添加record_prefix来处理两次被使用的名称。将前缀设置为所需的任何字符串:
json_normalize(data,
'protocol_parameters',
[['status','status'],
'auto_discovered',
'average_eps',
'creation_date',
'description',
'last_event_time',
'name'], record_prefix='_'
)
退出:
_name _value status.status auto_discovered average_eps creation_date description last_event_time name
0 identifier x.x.x.x SUCCESS True 0 0 LinuxServer device 1535539535018 LinuxServer @ x.x.x.x
1 incomingPayloadEncoding UTF-8 SUCCESS True 0 0 LinuxServer device 1535539535018 LinuxServer @ x.x.x.x