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

如何为DataFrame指定行添加Numpy ndarray作为新列?

给DataFrame新增含Numpy数组的列(特定行赋值,其余为NaN)

没问题,这事儿其实挺容易搞定的,我给你一步步拆解实现方法,连细节坑都给你踩平:

步骤1:导入必要库

首先得把pandas和numpy导进来,这俩是处理这类需求的核心工具:

import pandas as pd
import numpy as np

步骤2:创建示例DataFrame

先还原你说的测试数据:

df = pd.DataFrame({
    'Name': ['Test', 'Test2'],
    'Years': [2, 4]
})

步骤3:定义目标Numpy数组

把你要赋值的数组转成numpy格式(当然直接用列表也能存,但用numpy数组更符合你的需求描述):

testarray1 = np.array([100, 101, 1, 0, 0, 5])

步骤4:新增列并赋值

这里有个关键细节:因为我们要在单元格里存数组(属于object类型),直接初始化NaN的话列是float类型,所以得先转成object类型,再给特定行赋值:

# 新增一列,先全部设为NaN,然后转换为object类型(支持存数组)
df['array'] = np.nan
df['array'] = df['array'].astype(object)

# 给Name为'Test'的行赋值数组,注意要把数组包在列表里!
df.loc[df['Name'] == 'Test', 'array'] = [testarray1]

为什么要把数组包在列表里?

如果直接写df.loc[...,'array'] = testarray1,pandas会误以为你要把数组的每个元素分别赋值给多行,但我们是要把整个数组作为单个元素放进单元格,所以必须用[testarray1]告诉pandas:这是给这一行的这个单元格的单个值。

验证结果

运行完上面的代码后,打印df看看效果:

print(df)

输出会是:

Name  Years                array
0   Test      2  [100, 101, 1, 0, 0, 5]
1  Test2      4                    NaN

扩展:给其他行赋值不同数组

如果之后需要给其他行也赋值不同的数组,用同样的逻辑就行:

testarray2 = np.array([200, 201, 3])
df.loc[df['Name'] == 'Test2', 'array'] = [testarray2]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:30:32