Python 如何将json转换为数据帧并忽略顶部信息?
我正在尝试将一些Strava活动数据转换为df来进行一些分析 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
{
"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示例剥离到基本要素,将其作为文本发布,并更详细地解释需要在数据框架中进行哪些操作。