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

Pandas DataFrame中如何规范化字典类型列实现键值对拆行

解决方案

问题原因

你之前使用的pd.json_normalize作用是将嵌套字典/JSON结构拆分为多列,每个字典键会生成单独的列,和你需要拆分为多行的需求不匹配;另外从你给出的样例数据看,keywords列存储的已经是原生Python字典对象,不是JSON格式字符串,不需要额外调用json.loads做转换。

实现代码

使用Pandas内置的explode方法即可完成字典键值对拆行,代码如下:

# 将每行的字典转换为(关键词, 权重)元组构成的列表
df["keywords"] = df["keywords"].apply(dict.items)
# 按keywords列拆分多行,重置索引
df_long = df.explode("keywords", ignore_index=True)
# 将元组拆分出独立的关键词、权重列
df_long[["keyword", "score"]] = pd.DataFrame(
    df_long["keywords"].tolist(),
    index=df_long.index
)
# 清理冗余列得到最终结果
df_final = df_long.drop(columns=["keywords"])

输出效果

针对你给出的前2行样例数据,处理后结果结构如下:

TopicIDkeywordscore
797licence0.529
797chapter0.462
797explains0.263
797visitor0.244
797resident0.220
.........
798emotional0.352
798mental0.327
798state0.309

如果后续遇到keywords列存的是JSON字符串的情况,只需要在第一步前加一行df["keywords"] = df["keywords"].apply(json.loads)即可,当前你提供的样例不需要这步。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 09:27:09