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

Pandas如何仅将指定列中的嵌套列表(列表的列表)展平为一维列表

报错原因

你使用sum(x, [])触发报错的核心原因是:当col2中的元素为普通单层列表时,列表内的元素是整数/字符串等非列表类型,sum方法会尝试将非列表元素与空列表做拼接运算,自然触发TypeError类型错误。

解决方案

方案1:高可读性自定义函数(适配你的场景)

仅当列表为全嵌套结构(列表内所有元素都是列表)时触发展平,普通列表保持原样:

def flatten_if_nested(x):
    # 先判断列表非空,再判断首个元素为列表,符合你的数据特征
    if x and isinstance(x[0], list):
        return [item for sublist in x for item in sublist]
    return x

DF['col2'] = DF['col2'].apply(flatten_if_nested)

方案2:一行简洁写法

和方案1逻辑一致,用lambda表达式简化书写:

DF['col2'] = DF['col2'].apply(lambda x: [i for j in x for i in j] if (x and isinstance(x[0], list)) else x)

方案3:兼容混合结构的通用方案

如果你的数据中可能存在「同一个列表内同时包含普通元素和嵌套列表」的混合场景,可以用下面的通用展平函数:

def flatten_mixed(x):
    result = []
    for element in x:
        if isinstance(element, list):
            result.extend(element)
        else:
            result.append(element)
    return result

DF['col2'] = DF['col2'].apply(flatten_mixed)

内容的提问来源于stack exchange,提问作者Soumya Ranjan Sahoo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 01:18:02