如何使用Python将存储字典的DataFrame列转换为键为列名的结构化表格
实现方案
首先确认records列的元素为Python字典类型,若为字符串格式的字典,需先做类型转换:
import ast # 将字符串格式的字典转为实际字典对象 df['records'] = df['records'].apply(ast.literal_eval)
方法1:直接转列表生成新DataFrame(适合平级字典场景)
代码最简单,处理普通平级字典效率最高:
import pandas as pd # 展开records列为独立字段 expanded_cols = pd.DataFrame(df['records'].tolist(), index=df.index) # 若需要保留原表除records外的其他字段,执行合并,不需要可直接使用expanded_cols作为结果 final_df = pd.concat([df.drop('records', axis=1), expanded_cols], axis=1)
方法2:使用json_normalize展开(兼容性更强)
如果字典存在嵌套键、部分行缺键的场景,用该方法更稳妥,会自动处理异常场景:
# 展开records列,自动拆分嵌套键、给缺键的行填充NaN expanded_cols = pd.json_normalize(df['records']).set_index(df.index) # 合并原表其他字段 final_df = pd.concat([df.drop('records', axis=1), expanded_cols], axis=1)
执行后生成的final_df就会自动将原字典的所有键作为列名,对应值填充到对应单元格,符合结构化二维表格的要求。
内容的提问来源于stack exchange,提问作者Oreximena
相关产品推荐
相关产品推荐

