如何将指定格式JSON文件转换为排序后的结构化pandas DataFrame?
嗨,这事儿不难,我给你一步步拆解怎么实现:
步骤1:导入必要的库
首先得把处理DataFrame的核心库pandas和读取JSON文件的json库导入进来:
import pandas as pd import json
步骤2:读取并处理JSON数据
你的JSON结构是每个元素都嵌套在positionmessage键下,所以我们先读取文件,再把每个元素里的实际数据提取出来:
# 读取JSON文件,把"你的文件名.json"换成你实际的文件名 with open('你的文件名.json', 'r', encoding='utf-8') as f: raw_data = json.load(f) # 提取每个条目里的positionmessage内容,把嵌套结构拆平 processed_data = [item['positionmessage'] for item in raw_data]
步骤3:创建DataFrame并调整列名、顺序
接下来把处理好的数据转成DataFrame,同时把原数据里的sog列重命名为你要的SOG,再指定你想要的列顺序:
# 基于处理后的数据创建DataFrame df = pd.DataFrame(processed_data) # 重命名sog列为SOG,匹配你要的列名 df.rename(columns={'sog': 'SOG'}, inplace=True) # 指定你想要的列顺序,按需求调整即可 desired_columns = ['name', 'SOG', 'latitude', 'eni', 'mmsi'] df = df[desired_columns]
步骤4:对DataFrame排序
最后根据你的需求排序,比如按name升序排列(如果想按其他列排序,把by参数改成对应的列名就行;ascending=False就是降序):
# 按name列升序排序 df_sorted = df.sort_values(by='name', ascending=True) # 如果你需要去除重复的行(比如你例子里有两条ship-2的数据),可以加这一步 df_sorted = df_sorted.drop_duplicates()
查看最终结果
运行完上面的代码后,直接打印df_sorted就能看到符合要求的DataFrame了:
print(df_sorted)
执行后你会得到类似这样的结果:
name SOG latitude eni mmsi 0 ship-1 0 51.82284 02010000 100000 1 ship-2 0 51.81966 02020000 200000 3 ship-3 0 51.82250 02030000 300000 4 ship-4 0 51.82910 02040000 400000
内容的提问来源于stack exchange,提问作者Jeroen
相关产品推荐
相关产品推荐

