You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将指定格式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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 18:07:29