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

如何将Pandas DataFrame中字符串格式数组转为标准数组格式

解决方法

你可以使用Python标准库ast的literal_eval方法完成转换,该方法可以安全地将字符串形式的Python字面量(包括列表、字典等)转换为对应的原生数据类型,不会执行任意恶意代码,是处理这类场景的首选方案。

修改后完整代码

import json
import pandas as pd
import ast

sample = {"event_id": "dd9726c4-9c22-47b3-9a1b-fd6ecf494076", "event_type": "UPDATED", "attributes_changed": "['metadataStatus', 'elements']"}
df = pd.DataFrame(data=sample, index=[0])

# 核心转换逻辑:将字符串格式的列表转为真实列表
df['attributes_changed'] = df['attributes_changed'].apply(ast.literal_eval)

df_with_seq_id = [(json.dumps(rec), idx) for (idx, rec) in df.to_dict(orient='index').items()]

替代方案(JSON转换)

如果你的列表字符串格式符合JSON规范,也可以用json.loads转换,需要先把单引号替换为JSON要求的双引号:

df['attributes_changed'] = df['attributes_changed'].apply(lambda x: json.loads(x.replace("'", '"')))

可选容错处理

如果存在部分行格式异常、空值的情况,可以加异常捕获避免转换报错:

def safe_parse_list(x):
    try:
        return ast.literal_eval(x)
    except (ValueError, SyntaxError, TypeError):
        # 格式错误时返回空列表,也可根据业务需求返回原值/None等
        return []

df['attributes_changed'] = df['attributes_changed'].apply(safe_parse_list)

运行以上代码后,attributes_changed字段会被转换为真实的列表类型,序列化为JSON时就不会出现外层多余的双引号,符合你预期的输出格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 12:36:07