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

如何在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)

运行后就能得到你想要的结果:

idt1t2t3t4
8270568120148620.050.06080.4764640.53535
2637462627488350.080.03330.82630.9463
636737387363620.050.09260.86940.9903
737376812014840.080.04250.19480.3958

补充说明

为什么不用json.loads?因为你的字符串里的字典键是纯数字且未加引号,不符合JSON格式规范,json.loads会直接报错,而ast.literal_eval可以正确解析这种Python风格的字典语法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 11:47:24