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

如何拆分含多组key:value对的车辆路由DataFrame列?

问题描述

我有一个车辆数据集,最后一列是名为route的路由信息,数据格式为包含单个字典的数组:

[{
    "longitude": 101, 
    "latitude": 3, 
    "timestamp": 2, 
    "accuracy": 0.5, 
    "hdop": 1
}]

部分坐标数据可能缺少accuracy或hdop字段。我需要将这一列拆分为longitude、latitude、timestamp、accuracy、hdop单独的列,最终得到结构化表格。

我已经尝试了以下代码:

import csv
import json
import ast
import pandas as pd

# 将数据读取到Pandas DataFrame中
df = pd.read_csv('Trips Jan Week 1.csv')
df['route'] = pd.Series(df['route'],dtype="string")

# 将最后一列提取为字符串类型
routes = df.iloc[:, -1].astype(str)

# 解析JSON前去除首尾字符
routes2 = routes.apply(lambda x: x.strip('[]').strip())
print(routes2)
print(type(routes2))

运行后得到的routes2是包含单个JSON对象字符串的Series,但还没完成拆分。

期望输出的表格格式:

LongitudeLatitudeTimestampAccuracyHdop
101320.51
解决方法

你已经完成了最关键的第一步——去除数组的首尾括号,接下来只需要解析JSON并展开为列即可,具体步骤如下:

  1. 解析JSON字符串为字典
    考虑到部分数据可能存在格式小问题(比如单引号),用ast.literal_eval比json.loads兼容性更好,执行解析:

    # 解析每个字符串为字典
    parsed_routes = routes2.apply(ast.literal_eval)
    
  2. 将字典展开为结构化列
    使用pd.json_normalize可以直接把字典序列转换成DataFrame,自动处理缺失字段(缺失的accuracy或hdop会填充为NaN):

    # 展开字典为DataFrame
    route_df = pd.json_normalize(parsed_routes)
    
  3. 合并原数据集与拆分后的路由数据(可选)
    如果需要保留原数据的其他列,直接将拆分后的DataFrame与原DataFrame拼接:

    # 合并数据
    final_df = pd.concat([df.drop('route', axis=1), route_df], axis=1)
    

完整代码

import pandas as pd
import ast

# 读取数据集
df = pd.read_csv('Trips Jan Week 1.csv')

# 处理route列:转为字符串并去除首尾数组括号
df['route'] = df['route'].astype(str).apply(lambda x: x.strip('[]').strip())

# 解析JSON字符串为字典
parsed_routes = df['route'].apply(ast.literal_eval)

# 展开为结构化列
route_df = pd.json_normalize(parsed_routes)

# 合并原数据与拆分后的路由数据(如果不需要原数据其他列,直接用route_df即可)
final_df = pd.concat([df.drop('route', axis=1), route_df], axis=1)

# 查看结果
print(final_df.head())

说明

  • 对于缺失的accuracy或hdop字段,pd.json_normalize会自动填充为NaN,你可以根据需求用fillna()填充默认值(比如route_df.fillna(0, inplace=True))。
  • 如果你的route列中存在多个字典(即一个数组里有多个坐标点),需要先将每个数组展开为多行再拆分,但根据你的示例,每个数组只有一个字典,上述代码完全适用。

内容的提问来源于stack exchange,提问作者Pranav Ramsahye

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 20:52:09