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

如何将列表元素逐一追加到Pandas DataFrame的嵌套列表中(保持结构)

解决方案:Pandas嵌套列表批量追加元素

这里有两种优雅的实现方式,能完美满足你的需求——把列表C的元素逐个追加到DataFrame的B列嵌套列表的每个最内层子列表中,同时保留原有结构和A列的数据:

方法一:使用递归+迭代器(推荐,无全局变量)

这种方式利用Python的迭代器自动追踪元素位置,递归处理不同深度的嵌套列表,代码更简洁健壮:

import pandas as pd

d = {'A': [1,2,3,4], 'B': [[[1,2],[2,3]],[[3,4],[2,5]],[[5,6],[5,6],[5,6]],[7,8]]}
df = pd.DataFrame(data=d)
C = [1,2,3,4,5,6,7,8]

# 创建C的迭代器,自动按顺序返回元素
c_iter = iter(C)

def append_to_sublists(nested_list):
    # 判断当前是否为嵌套层级(不是最内层子列表)
    if isinstance(nested_list[0], list):
        # 递归处理每个子层级
        return [append_to_sublists(sublist) for sublist in nested_list]
    else:
        # 从迭代器取下一个元素,追加到当前子列表
        return nested_list + [next(c_iter)]

# 应用函数更新B列
df['B'] = df['B'].apply(append_to_sublists)

# 验证结果
print(df['B'].tolist())

方法二:使用递归+全局计数器

如果你对迭代器不太熟悉,也可以用全局计数器手动追踪元素位置,逻辑更直观:

import pandas as pd

d = {'A': [1,2,3,4], 'B': [[[1,2],[2,3]],[[3,4],[2,5]],[[5,6],[5,6],[5,6]],[7,8]]}
df = pd.DataFrame(data=d)
C = [1,2,3,4,5,6,7,8]

# 初始化计数器,跟踪当前要取C的第几个元素
c_idx = 0

def append_to_sublists(nested_list):
    global c_idx
    if isinstance(nested_list[0], list):
        return [append_to_sublists(sublist) for sublist in nested_list]
    else:
        # 追加元素后,计数器+1
        new_sublist = nested_list + [C[c_idx]]
        c_idx += 1
        return new_sublist

df['B'] = df['B'].apply(append_to_sublists)

结果说明

两种方法最终都会得到你想要的B列结构:

[[[1,2,1],[2,3,2]],[[3,4,3],[2,5,4]],[[5,6,5],[5,6,6],[5,6,7]],[7,8,8]]

A列的数据会完全保留,不受任何影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:43:29