Python 如何将json转换为数据帧并忽略顶部信息?

Python 如何将json转换为数据帧并忽略顶部信息?,python,json,dataframe,linux-df,strava,Python,Json,Dataframe,Linux Df,Strava,我正在尝试将一些Strava活动数据转换为df来进行一些分析 json的典型顶部在所有文件中都是这样的: { "frame_type": "data_message", "name": "record", "header": { "local_mesg_num": 3, "time_offset": n

我正在尝试将一些Strava活动数据转换为df来进行一些分析

json的典型顶部在所有文件中都是这样的:

{
    "frame_type": "data_message",
    "name": "record",
    "header": {
        "local_mesg_num": 3,
        "time_offset": null,
        "is_developer_data": false
    },
    "fields": [
        {
            "name": "xx",
            "value": "xx",
            "units": "xx",
            "def_num": xx,
            "raw_value": xx
        }
    ]
}
但上面有大量信息,我不知道如何过滤掉

我正在努力
df=pandas.json\u规范化(数据)
但它返回的是:

基本上,我希望表输出为:

时间戳 位置 位置(u long) 距离 课程结束时间 等 第一 一行 数据 更多 专栏也是
我不认为直接调用函数就可以实现所需的功能。您可能需要事先重新格式化数据。可以帮助您操作原始数据,将其视为本机Python列表和DICT,以定义和填充第二个“已清理”字典,然后将其传入
pandas.DataFrame

从JSON文件
s
的字符串表示开始,可以将其转换为字典列表

contents = json.loads(s)
您的
data3
变量似乎已采用此格式。这是一份字典目录

contents = json.loads(s)
如果我理解正确,您希望数据帧列与“name”字段相对应,并用“value”字段填充行
data3
包含许多字典,因此每个字典对应一行。为了为您开发工作代码,我创建了一个愚蠢的示例,希望能够很好地模仿您的代码

s=”“”
[
{
“帧类型”:“数据消息”,
“名称”:“记录”,
“标题”:{
“本地数量”:3,
“时间偏移量”:空,
“是开发者数据”:false
},
“字段”:[
{
“名称”:“x1”,
“值”:“xx”,
“单位”:“xx”,
“def_num”:1,
“原始值”:1
}, 
{
“名称”:“x2”,
“值”:“xx”,
“单位”:“xx”,
“def_num”:2,
“原始值”:2
},
{
“名称”:“x3”,
“值”:“xx”,
“单位”:“xx”,
“def_num”:3,
“原始值”:3
}
]
},
{
“帧类型”:“数据消息”,
“名称”:“记录”,
“标题”:{
“本地数量”:3,
“时间偏移量”:空,
“是开发者数据”:false
},
“字段”:[
{
“名称”:“x1”,
“值”:“xx”,
“单位”:“xx”,
“def_num”:1,
“原始值”:1
}, 
{
“名称”:“x2”,
“值”:“xx”,
“单位”:“xx”,
“def_num”:2,
“原始值”:2
},
{
“名称”:“x3”,
“值”:“xx”,
“单位”:“xx”,
“def_num”:3,
“原始值”:3
}
]
}
,   {
“帧类型”:“数据消息”,
“名称”:“记录”,
“标题”:{
“本地数量”:3,
“时间偏移量”:空,
“是开发者数据”:false
},
“字段”:[
{
“名称”:“x1”,
“值”:“xx”,
“单位”:“xx”,
“def_num”:1,
“原始值”:1
}, 
{
“名称”:“x2”,
“值”:“xx”,
“单位”:“xx”,
“def_num”:2,
“原始值”:2
},
{
“名称”:“x3”,
“值”:“xx”,
“单位”:“xx”,
“def_num”:3,
“原始值”:3
}
]
}]
"""
data3=json.loads#模拟您的data3变量
实例化一个空的dict并开始填充您想要的内容。此dict将被传递到
pd.DataFrame()

重新格式化的_数据={}#实例化
首先,使用第一个字典定义数据帧的列

数据3[0]中的对象的
:
对于事物中的字段[“字段”]:
重新格式化的_数据[字段[“名称”]]=[]#实例化列
然后填充行

数据3中的事物的
:
对于事物中的字段[“字段”]:
重新格式化的_数据[字段[“名称”]]。追加(字段[“值”])
最后,获取数据帧

df = pd.DataFrame(reformatted_data)

请添加一个JSON的实际示例,特别是您希望在您的问题中忽略的“上面的信息负载”,否则没有人可以帮助您。将JSON粘贴为文本可以让我们将其复制并粘贴到IDE中以使用……这可能行得通,也可能行不通,因为要理解数据的结构和您要实现的目标有点困难。如果它不起作用,请更具体一些。将JSON示例剥离到基本要素,将其作为文本发布,并更详细地解释需要在数据框架中进行哪些操作。