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

使用df.at向pandas DataFrame单元格存储数组触发ValueError如何解决

报错原因

你初始化DataFrame时,A列的默认数据类型为整数型,pandas会校验赋值内容与列类型的匹配性,你要写入的多维数组无法转换为单个整数,因此抛出ValueError: setting an array element with a sequence。

解决方案(保留使用df.at的要求)

你只需要先将目标列的数据类型显式转换为object(object类型列支持存储任意Python对象,包括numpy数组),再执行赋值操作即可,修改后的完整代码如下:

import numpy as np
import pandas as pd

arr = np.array([[123, 123], [123, 123]], dtype=int)

df = pd.DataFrame(data= [[1, 2], [3, 4]], columns=["A", "B"])
# 新增行:将A列转为object类型
df['A'] = df['A'].astype(object)
# 保留原有的df.at赋值逻辑
df.at[0, "A"] = arr

# 验证赋值结果
print(df.at[0, "A"])

如果你不想显式声明整列类型,也可以先给目标位置赋值为None触发pandas自动转换列类型为object,再赋值数组:

import numpy as np
import pandas as pd

arr = np.array([[123, 123], [123, 123]], dtype=int)

df = pd.DataFrame(data= [[1, 2], [3, 4]], columns=["A", "B"])
# 先给目标位置赋值为None,触发列类型自动转换为object
df.at[0, "A"] = None
# 再赋值数组
df.at[0, "A"] = arr

注意事项

将数组存储在DataFrame单元格后,后续做列级批量数值运算时需要额外做类型适配,避免出现预期外的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 11:54:03