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

机器学习:预处理中处理对象数组的问题咨询

处理列中对象数组的解决思路
  • 展开为多行(行转列)
    要是需要把数组里的每个元素拆成单独行,同时保留原列的关联信息,用pandas的explode方法就能快速实现:

    import pandas as pd
    
    # 模拟你的数据
    data = {
        "Column A": ["movie1", "movie2"],
        "Column B": [
            [{"iso_639_1": "en", "name": "English"}, {"iso_639_1": "zh", "name": "普通话"}],
            [{"iso_639_1": "da", "name": "Dansk"}, {"iso_639_1": "en", "name": "English"}, {"iso_639_1": "no", "name": "Norsk"}, {"iso_639_1": "ru", "name": "Русский"}]
        ]
    }
    df = pd.DataFrame(data)
    
    # 先把数组拆成多行
    df_exploded = df.explode("Column B", ignore_index=True)
    # 再把字典格式的内容拆成单独列
    df_final = pd.concat([df_exploded["Column A"], df_exploded["Column B"].apply(pd.Series)], axis=1)
    

    处理后每行对应一个语言条目,电影名和语言信息一一对应,方便后续分析。

  • 提取特定字段生成新列
    如果只需要数组里的某类信息(比如所有语言名称、特定语言代码),用列表推导式直接提取就行:

    # 提取所有语言名称,用逗号拼接成字符串
    df["language_names"] = df["Column B"].apply(lambda x: ", ".join([item["name"] for item in x]))
    # 提取第一个语言的ISO代码
    df["first_language_code"] = df["Column B"].apply(lambda x: x[0]["iso_639_1"] if x else None)
    

    这种方式能快速生成扁平的字段,适配大多数数据分析工具的需求。

  • 合并为结构化字符串
    要是需要保留完整的数组信息,但又不想处理嵌套结构,直接转成JSON字符串存储:

    import json
    df["Column B_str"] = df["Column B"].apply(json.dumps)
    

    后续需要使用原始数据时,再用json.loads把字符串转回数组即可,适合需要存档完整信息的场景。

  • 过滤数组元素
    如果只需要数组中符合特定条件的条目(比如只保留英文),用简单的过滤逻辑就能实现:

    df["english_only"] = df["Column B"].apply(lambda x: [item for item in x if item["iso_639_1"] == "en"])
    

    可以根据业务需求灵活调整过滤条件,筛选出有用的子数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 00:42:27