如何用Pandas读取CSV中的嵌套JSON并拆分加速度计数据?
高效拆分CSV中的嵌套JSON列到独立列
核心方案:利用Pandas的矢量化JSON解析
不需要逐行循环,直接用Pandas内置的JSON解析工具就能高效完成拆分,步骤如下:
读取分号分隔的CSV
注意指定分隔符为;,避免默认逗号分隔导致解析错误:import pandas as pd import json # 替换为你的文件路径 df = pd.read_csv('sensor_data.csv', sep=';')解析嵌套JSON列
假设存储加速度计数据的列名为accelerometer(根据你的实际列名修改),用以下两种方法解析:- 方法1:适合大多数场景,直接解析字符串为JSON并转为DataFrame
# 解析JSON字符串为结构化数据 accel_df = df['accelerometer'].str.json_normalize() - 方法2:如果JSON格式有异常(比如存在无效字符串),添加容错处理
def safe_parse_json(s): try: return json.loads(s) except: return {"X": None, "Y": None, "Z": None} accel_df = df['accelerometer'].apply(safe_parse_json).apply(pd.Series)
- 方法1:适合大多数场景,直接解析字符串为JSON并转为DataFrame
合并数据并清理
将拆分后的X/Y/Z列与原DataFrame合并,删除原JSON列:# 合并数据 final_df = pd.concat([df.drop('accelerometer', axis=1), accel_df], axis=1)
为什么这个方法高效?
Pandas的str.json_normalize和apply(pd.Series)都是基于矢量化操作实现的,底层用C语言优化,比Python层面的逐行循环快几个数量级,尤其适合处理大规模数据集。
内容的提问来源于stack exchange,提问作者Tue
相关产品推荐
相关产品推荐

