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

如何在pandas DataFrame中创建元素为NumPy数组或列表的新列

解决方案

要让pandas列支持存储列表、NumPy数组这类非标量元素,只需要将列的类型指定为object即可,下面是两种常用实现方式:

方法1:初始化空object类型列

适合不需要给全列设置统一初始值的场景:

# 直接创建dtype为object的新列
df['new'] = pd.Series(dtype='object')

# 测试赋值操作
df.loc[1, 'new'] = np.array([2 , 'l'])
df.loc[2, 'new'] = [2 , 'l']

方法2:初始化全列默认空列表

适合需要给所有行默认赋值空列表的场景,注意不要用[[]]*len(df)的写法,会导致所有行引用同一个列表对象,修改某一行会同步修改所有行,正确写法如下:

# 用列表推导式生成独立的空列表
df['new'] = [[] for _ in range(len(df))]

完整验证示例

import pandas as pd
import numpy as np

df = pd.DataFrame({'id': [1, 2, 3, 4],
                   'a': ['on', 'on', 'off', 'off'],
                   'b': ['on', 'off', 'on', 'off']})

# 初始化新列
df['new'] = pd.Series(dtype='object')

# 执行赋值
df.loc[1, 'new'] = np.array([2 , 'l'])
df.loc[2, 'new'] = [2 , 'l']

print(df)

运行后输出结果如下:

id    a    b       new
0   1   on   on       NaN
1   2   on  off  [2, l]
2   3  off   on  [2, l]
3   4  off  off       NaN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:42:03