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

如何正确扁平化嵌套数据集,生成带索引后缀的字段?

解决方案:展开嵌套DataFrame为带索引后缀的字段

一、核心思路

针对两种嵌套类型分别处理:

  • 列表型嵌套(如General_officers,每个单元格是包含多个字典的列表):将列表内的每个字典展开为带索引后缀的字段
  • 字典型嵌套(如MAtainance_name_type_work_ty,每个单元格是单个字典):直接展开为一级字段,或按需添加前缀

二、代码实现

基于pandas库的完整处理代码如下:

import pandas as pd

# 处理列表型嵌套字段(如General_officers)
def flatten_list_col(df, col_name):
    # 遍历列表内的字典,生成带索引后缀的字段名
    expanded = df[col_name].apply(lambda x: pd.Series({
        f"{col_name}_{i}_{k}": v 
        for i, d in enumerate(x) 
        for k, v in d.items()
    }))
    # 合并展开后的字段并移除原嵌套列
    return pd.concat([df.drop(col_name, axis=1), expanded], axis=1)

# 处理字典型嵌套字段(如MAtainance_name_type_work_ty)
def flatten_dict_col(df, col_name, prefix=None):
    prefix = prefix or col_name
    # 展开字典并添加前缀
    expanded = pd.json_normalize(df[col_name]).add_prefix(f"{prefix}_")
    return pd.concat([df.drop(col_name, axis=1), expanded], axis=1)

# 分步执行处理(替换为你的实际DataFrame)
df = flatten_list_col(df, "General_officers")
df = flatten_dict_col(df, "MAtainance_name_type_work_ty")

# 查看处理结果
print(df.head())

三、代码说明

  • flatten_list_col函数:把列表中的每个字典拆解为原字段名_索引_键名格式的字段(比如General_officers_0_Name),自动适配列表内的元素数量
  • flatten_dict_col函数:用pd.json_normalize快速展开字典,给新字段加上原嵌套列名作为前缀,避免字段名冲突
  • 若存在多层嵌套的复杂结构,可在函数中加入递归逻辑,逐层拆解深层字段

四、注意事项

  • 若部分行的嵌套列表为空,展开后对应字段会填充NaN,可根据业务需求用fillna()统一处理
  • 若原字段名包含特殊字符,建议先清理后再执行展开操作,避免后续出现字段名解析错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 21:30:58