Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中将JSON更改为数据帧_Python - Fatal编程技术网

在python中将JSON更改为数据帧

在python中将JSON更改为数据帧,python,Python,我想通过将data下的列设置为dataframe,将API json响应更改为dataframe。注意,它在data(message)下也有一些嵌套参数,我想将其设置为单独的列 { "成功":对,, “代码”:200, “数据”:[ { “id”:342964769, 'type':'ios', “创建时间”:1567591650, “打开计数”:2, “环境”:“生产”, “活动id”:12713145, “项目id”:1758, “错误”:0, “已发送计数”:3, “消息”:{ “时间戳”

我想通过将data下的列设置为dataframe,将API json响应更改为dataframe。注意,它在data(message)下也有一些嵌套参数,我想将其设置为单独的列

{
"成功":对,,
“代码”:200,
“数据”:[
{
“id”:342964769,
'type':'ios',
“创建时间”:1567591650,
“打开计数”:2,
“环境”:“生产”,
“活动id”:12713145,
“项目id”:1758,
“错误”:0,
“已发送计数”:3,
“消息”:{
“时间戳”:“1567591643”,
“徽章”:“,
‘警惕’:“‘那天我在这里喝了一品脱啤酒,割了草坪’-迈克·彭斯对我说”
“顿贝格的一小群人”,
“声音”:“默认值”,
“articleId”:“38465289”,
“类别”:“新闻/”,
“id”:“342964769”,
“pushId”:“fireabse-5d6f8cdb8c3e9”,
‘title’:‘Independent.ie’,
“内容可用”:“1”,
“xpush”:“是”,
“cid”:“12713145”
},
“错误消息”:无
}, {
“id”:342964771,
'type':'android',
“创建时间”:1567591650,
“打开计数”:0,
“环境”:“生产”,
“活动id”:12713145,
“项目id”:1758,
“错误”:0,
“已发送计数”:0,
“消息”:无,
“错误消息”:无
}
]
}

您可以通过删除
消息
级别并使字典的每个条目成为父dict的一部分来展平字典:

将熊猫作为pd导入
导入副本
数据={
"成功":对,,
“代码”:200,
“数据”:[
{
“id”:342964769,
'type':'ios',
“创建时间”:1567591650,
“打开计数”:2,
“环境”:“生产”,
“活动id”:12713145,
“项目id”:1758,
“错误”:0,
“已发送计数”:3,
“消息”:{
“时间戳”:“1567591643”,
“徽章”:“,
‘警惕’:“‘那天我在这里喝了一品脱啤酒,割了草坪’-迈克·彭斯对我说”
“顿贝格的一小群人”,
“声音”:“默认值”,
“articleId”:“38465289”,
“类别”:“新闻/”,
“id”:“342964769”,
“pushId”:“fireabse-5d6f8cdb8c3e9”,
‘title’:‘Independent.ie’,
“内容可用”:“1”,
“xpush”:“是”,
“cid”:“12713145”
},
“错误消息”:无
}, {
“id”:342964771,
'type':'android',
“创建时间”:1567591650,
“打开计数”:0,
“环境”:“生产”,
“活动id”:12713145,
“项目id”:1758,
“错误”:0,
“已发送计数”:0,
“消息”:无,
“错误消息”:无
}
]
}
已处理=[]
对于数据[“数据”]中的dat:
new_dat=copy.deepcopy(dat)#仅当原始数据对您重要时才重要
如果新数据中的“消息”和新数据[“消息”]:
消息=新的数据弹出(“消息”)
新数据更新(消息)
已处理。追加(新数据)
df=pd.DataFrame(已处理)
打印(df.列)
输出:

Index(['id', 'type', 'create_time', 'open_count', 'environment', 'campaign_id',
       'project_id', 'error', 'sent_count', 'error_message', 'timestamp',
       'badge', 'alert', 'sound', 'articleId', 'category', 'pushId', 'title',
       'content-available', 'xpush', 'cid', 'message'],
      dtype='object')

您可以通过删除
消息
级别并使字典的每个条目成为父dict的一部分来展平字典:

将熊猫作为pd导入
导入副本
数据={
"成功":对,,
“代码”:200,
“数据”:[
{
“id”:342964769,
'type':'ios',
“创建时间”:1567591650,
“打开计数”:2,
“环境”:“生产”,
“活动id”:12713145,
“项目id”:1758,
“错误”:0,
“已发送计数”:3,
“消息”:{
“时间戳”:“1567591643”,
“徽章”:“,
‘警惕’:“‘那天我在这里喝了一品脱啤酒,割了草坪’-迈克·彭斯对我说”
“顿贝格的一小群人”,
“声音”:“默认值”,
“articleId”:“38465289”,
“类别”:“新闻/”,
“id”:“342964769”,
“pushId”:“fireabse-5d6f8cdb8c3e9”,
‘title’:‘Independent.ie’,
“内容可用”:“1”,
“xpush”:“是”,
“cid”:“12713145”
},
“错误消息”:无
}, {
“id”:342964771,
'type':'android',
“创建时间”:1567591650,
“打开计数”:0,
“环境”:“生产”,
“活动id”:12713145,
“项目id”:1758,
“错误”:0,
“已发送计数”:0,
“消息”:无,
“错误消息”:无
}
]
}
已处理=[]
对于数据[“数据”]中的dat:
new_dat=copy.deepcopy(dat)#仅当原始数据对您重要时才重要
如果新数据中的“消息”和新数据[“消息”]:
消息=新的数据弹出(“消息”)
新数据更新(消息)
已处理。追加(新数据)
df=pd.DataFrame(已处理)
打印(df.列)
输出:

Index(['id', 'type', 'create_time', 'open_count', 'environment', 'campaign_id',
       'project_id', 'error', 'sent_count', 'error_message', 'timestamp',
       'badge', 'alert', 'sound', 'articleId', 'category', 'pushId', 'title',
       'content-available', 'xpush', 'cid', 'message'],
      dtype='object')
这就是你想要的

def dict_pop(d, *args):
    v = d.pop(*args)
    return v if v else {}

resp = [{**dict_pop(i,'message'), **i} for i in resp['data']]
resp = pd.DataFrame(resp)
这就是你想要的

def dict_pop(d, *args):
    v = d.pop(*args)
    return v if v else {}

resp = [{**dict_pop(i,'message'), **i} for i in resp['data']]
resp = pd.DataFrame(resp)

pd.DataFrame(resp['data'])
??@sushanth这是可行的,但问题是如果我想隔离消息列,那么我应该如何做
pd.DataFrame(resp['data'])
??@sushanth这是可行的,但问题是如果我想隔离消息列,那么它是嵌套的,那么我该怎么做呢