如何在Python中将类字典字符串拆分为多列?
解决方法
要把这种类字典字符串拆分成目标列,核心是先把字符串转换成可操作的Python字典,再提取里面的键和值。这里推荐用ast.literal_eval处理字符串(因为你的字典键是数字且不带引号,json.loads没法直接解析),具体步骤如下:
步骤1:导入依赖库
import pandas as pd import ast
步骤2:构造示例数据(或直接用你现有的DataFrame)
data = { 'column_A': [ '{827056812014862 : [0.05, 0.0608, 0.476464, 0.53535]}', '{263746262748835 : [0.08, 0.0333, 0.8263, 0.9463]}', '{63673738736362 : [0.05, 0.0926, 0.8694, 0.9903]}', '{73737681201484 : [0.08, 0.0425, 0.1948, 0.3958]}' ] } df = pd.DataFrame(data)
步骤3:解析字符串为字典并提取数据
先把column_A的每个字符串转成字典,再分别提取唯一键作为id,列表里的四个元素作为t1到t4:
# 将字符串转为Python字典 df['dict_data'] = df['column_A'].apply(ast.literal_eval) # 提取唯一键作为id列 df['id'] = df['dict_data'].apply(lambda x: next(iter(x.keys()))) # 提取列表值并拆分为t1-t4列 df[['t1', 't2', 't3', 't4']] = df['dict_data'].apply(lambda x: pd.Series(next(iter(x.values())))) # 保留目标列,删除中间辅助列 result_df = df[['id', 't1', 't2', 't3', 't4']] print(result_df)
运行后就能得到你想要的结果:
| id | t1 | t2 | t3 | t4 |
|---|---|---|---|---|
| 827056812014862 | 0.05 | 0.0608 | 0.476464 | 0.53535 |
| 263746262748835 | 0.08 | 0.0333 | 0.8263 | 0.9463 |
| 63673738736362 | 0.05 | 0.0926 | 0.8694 | 0.9903 |
| 73737681201484 | 0.08 | 0.0425 | 0.1948 | 0.3958 |
补充说明
为什么不用json.loads?因为你的字符串里的字典键是纯数字且未加引号,不符合JSON格式规范,json.loads会直接报错,而ast.literal_eval可以正确解析这种Python风格的字典语法。
内容的提问来源于stack exchange,提问作者sonia
相关产品推荐
相关产品推荐

