如何拆分DataFrame中的字典列为单独列且仅保留字典值
解决pandas DataFrame字典列拆分为多列的方案
适用场景
DataFrame中存在单列存储字典数据,需要将字典的键值对拆分到独立列,仅保留对应值。
代码实现
首先构造示例数据用于演示:
import pandas as pd # 示例原始数据 df = pd.DataFrame({ 'dic': [ {'_id': '1', 'value': 'apple'}, {'_id': '2', 'value': 'car'} ] })
方法1:键顺序固定的简单场景
当所有行字典的键顺序完全一致时,可直接提取值生成新列:
new_df = pd.DataFrame(df['dic'].apply(lambda x: list(x.values())).tolist(), columns=['_id', 'value'])
方法2:通用兼容场景
不受字典键顺序影响,存在部分行缺键时自动填充NaN,更稳定:
new_df = pd.json_normalize(df['dic'])
合并回原数据集
如果需要保留原始DataFrame除字典列外的其他字段,可按以下方式拼接:
df = pd.concat([df.drop('dic', axis=1), new_df], axis=1)
最终输出效果
处理后得到的结果如下:
| _id | value |
|---|---|
| 1 | apple |
| 2 | car |
注意事项
- 如需自定义列名,可直接修改生成的
new_df的columns属性,如new_df.columns = ['第一列', '第二列'] - 若字典嵌套层级超过1层,可调整
pd.json_normalize的record_path、meta参数适配需求
内容的提问来源于stack exchange,提问作者Omar
相关产品推荐
相关产品推荐

