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

如何展开Pandas DataFrame中存储为字符串的字典列

字符串格式字典列的DataFrame解析方案

问题背景

现有DataFrame结构如下:

import pandas as pd
df = pd.DataFrame({'a':[1,2,3], 'b':["{'c':1}", "{'d':3}", "{'c':5, 'd':6}"]})

需要转换为如下格式:

a    c    d
0  1  1.0  NaN
1  2  NaN  3.0
2  3  5.0  6.0

由于b列存储的是字符串形式的字典,直接调用df['b'].apply(pd.Series)无法生效,且无法修改b列的原始结构,需针对性解析。

可行解决方案

方法1:用ast.literal_eval安全解析

ast.literal_eval能安全将字符串化的Python对象转为实际对象,适配单引号格式的字符串字典:

import ast
import pandas as pd

# 解析b列字符串为字典,再转为Series
parsed_b = df['b'].apply(ast.literal_eval).apply(pd.Series)
# 合并原a列与解析结果
result_df = pd.concat([df['a'], parsed_b], axis=1)
print(result_df)

方法2:替换引号后用json.loads解析

若无法使用ast模块,可先将单引号替换为双引号,再用json.loads解析:

import json
import pandas as pd

# 替换单引号为双引号,解析为字典后转Series
parsed_b = df['b'].str.replace("'", "\"").apply(json.loads).apply(pd.Series)
result_df = pd.concat([df['a'], parsed_b], axis=1)
print(result_df)

注意:若字符串中包含转义单引号,此方法可能失效,优先选择方法1。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 13:25:25