如何将Pandas单列中的嵌套字典数据展开为多列DataFrame?
解决DataFrame嵌套字典列表的拆分问题
步骤1:将字符串格式的列表字典转为Python对象
你的title列内容是字符串形式的列表字典(并非原生Python对象),首先得把它转成可操作的列表与字典结构。用ast.literal_eval比直接用eval更安全:
import ast import pandas as pd # 假设你的DataFrame名为df df['title'] = df['title'].apply(ast.literal_eval)
执行后,title列的每个元素会变成包含单个字典的列表(比如[{'id': 'text1', ...}])。
步骤2:提取字典并展开嵌套结构
因为每个列表里只有一个字典,先把字典单独取出,再用pd.json_normalize()展开所有层级的键,包括嵌套的meta字典:
# 提取列表中的字典,得到字典类型的Series dict_series = df['title'].str[0] # 展开字典(含嵌套的meta结构) expanded_df = pd.json_normalize(dict_series)
步骤3:合并到原DataFrame
如果需要保留原DataFrame的其他列,直接去掉原title列后合并展开结果:
final_df = df.drop('title', axis=1).join(expanded_df)
特殊情况处理(可选)
如果列表中存在多个字典,可先拆分列表为多行再展开:
# 把列表拆成多行 exploded_df = df.explode('title') # 展开字典 final_df = pd.json_normalize(exploded_df['title'])
最终所有嵌套字段都会被拆为单独列,比如id、id2、info4(保留列表形式,如需拆分可再用explode)、meta.label1、meta.label2等。
内容的提问来源于stack exchange,提问作者crl6904
相关产品推荐
相关产品推荐

