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

从PostgreSQL导出CSV到Pandas后,如何解析数组字段为Python列表

解析PostgreSQL导出CSV中的JSON数组字段到Python列表

这个场景我太熟了——PostgreSQL导出CSV时,json/jsonb类型的数组会被转成带转义双引号的字符串,直接存在DataFrame里确实没法直接用。不过别担心,用Python内置的json模块就能完美解决,步骤很简单:

1. 先确认字段格式

首先你得确认DataFrame里的目标列内容是标准的JSON数组格式(哪怕带转义)。比如取一行看看实际内容:

print(df['your_array_column'].iloc[0])
# 输出应该类似:'[{"keyOne": "valueOne", "keyTwo": true}, {"keyOne": "valueTwo", "keyTwo": false}]'

2. 用json.loads批量解析

直接对目标列应用json.loads函数,就能把每个字符串转成Python列表+字典的结构,原本的布尔值也会被自动识别成True/False:

import json
import pandas as pd

# 假设你已经把CSV加载到df里了
df['parsed_array'] = df['your_array_column'].apply(json.loads)

3. 处理可能的解析异常

如果导出的CSV里有格式不规范的行(比如缺失括号、转义错误),直接解析会报错。可以加个异常处理函数,避免整个流程卡住:

def safe_parse_json(s):
    try:
        return json.loads(s)
    except ValueError as e:
        print(f"解析失败的内容:{s},错误信息:{e}")
        return []  # 或者返回None,根据你的需求调整

df['parsed_array'] = df['your_array_column'].apply(safe_parse_json)

额外注意:如果字符串首尾有多余引号

有时候PostgreSQL导出的CSV会给字段套一层额外的双引号,导致字符串开头结尾是",这时候要先去掉再解析:

# 先去除首尾的双引号
df['your_array_column'] = df['your_array_column'].str.strip('"')
# 再解析
df['parsed_array'] = df['your_array_column'].apply(json.loads)

这样处理完之后,parsed_array列里的每个元素就是你想要的Python列表,里面的字典键值对、布尔值都能正确保留~

内容的提问来源于stack exchange,提问作者Brylie Christopher Oxley

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:55:41