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

如何为pandas DataFrame新增元素均为[0]单元素列表的列

问题原因

你之前执行df = df.assign(c=[0])无法得到预期结果的核心原因是:传入的c参数值是长度为1的列表,和目标DataFrame的3行长度不匹配,pandas会直接抛出值长度与索引长度不匹配的异常,无法完成列赋值。
另外pandas在给列赋值传入可迭代对象时,会默认按行拆分可迭代对象的元素填充到每一行,直接传入单个[0]既满足不了长度匹配要求,也无法实现每行存一个独立列表[0]的需求。

正确实现方式

推荐使用列表推导式生成和DataFrame行数等长、每个元素为独立[0]的序列传入,避免可变对象引用的坑,两种常用写法如下:

  • 写法1:沿用assign方法实现
import pandas as pd
df = pd.DataFrame({'a':[[1,2],[3,2],[5,2]],'b':[[1],[9],[9,9]]})
df = df.assign(c=[[0] for _ in range(len(df))])
  • 写法2:直接列赋值,写法更简洁
df['c'] = [[0] for _ in range(len(df))]
注意避坑

禁止使用[[0]] * len(df)的方式生成赋值序列:这种写法生成的序列中,所有位置的元素都指向内存中同一个[0]列表对象,后续你修改任意一行c列的列表内容时,所有行的c列都会同步被修改,会引发难以排查的逻辑bug。

执行上述正确代码后,得到的DataFrame结构和预期完全一致:

a       b    c
0  [1, 2]     [1]  [0]
1  [3, 2]     [9]  [0]
2  [5, 2]  [9, 9]  [0]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 13:06:30