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

如何将Pandas DataFrame中字典列拆分为多列?现有方法失效

解决方法

首先,我们可以先将字典列转换为独立的DataFrame,再合并回原表,就能得到你需要的四个新列。如果还需要将列表元素展开为多行,可以再用explode处理。

步骤1:将字典列转换为新列

假设你的原始DataFrame名为df,执行以下代码:

import pandas as pd

# 将dbpedia_entry列的字典展开为DataFrame
expanded_df = df['dbpedia_entry'].apply(pd.Series)

# 将展开后的列合并到原DataFrame,同时移除原字典列
result_df = pd.concat([df.drop('dbpedia_entry', axis=1), expanded_df], axis=1)

执行后,result_df就会新增dbpedia_entity、dbpedia_id、dbpedia_label、dbpedia_raw_result四个列,每个列的单元格对应原字典中键的列表值。

步骤2(可选):将列表元素展开为多行

如果需要把每个列表里的元素单独占一行,同时保留其他列的对应值,可以使用explode。注意:如果不同列的列表长度不一致,explode会自动将较短列表的元素重复,以匹配最长列表的长度(或者你可以指定仅展开特定列):

# 展开所有包含列表的列,重置索引
final_df = result_df.explode(
    ['dbpedia_entity', 'dbpedia_id', 'dbpedia_label', 'dbpedia_raw_result'],
    ignore_index=True
)

为什么之前的方法无效?

  • 直接用explode处理原字典列:explode仅对列表/元组类型的单元格有效,你的列元素是字典,所以直接调用会无效。
  • 仅执行apply(pd.Series)但未合并:如果只运行了df['dbpedia_entry'].apply(pd.Series),没有将结果合并回原DataFrame,自然看不到新增的列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 20:13:23