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

如何在Pandas DataFrame中存储字符串数组?解决赋值报错问题

解决DataFrame单元格存储字符串数组的ValueError问题

错误原因

报错ValueError: Must have equal len keys and value when setting with an iterable是因为pandas默认会把你赋值的列表当作要分配给多行/多列的元素,而非单个单元格的整体值,因此要求列表长度与目标行/列长度匹配,和你想把整个列表塞进单个单元格的需求冲突,从而触发错误。

三种可行解决方案

  • 方法1:用df.at替代df.loc
    at是pandas专门用于访问单个单元格的方法,可直接把列表赋值给目标单元格:
dataframe.at[x, 'Words'] = words
  • 方法2:给loc赋值时嵌套列表
    把要存储的列表包装成一个长度为1的列表,让pandas识别为单个单元格的值:
dataframe.loc[x, 'Words'] = [words]
  • 方法3:初始化列时就设置为列表类型
    避免初始化为空字符串导致的类型不兼容:
# 初始化列时生成对应长度的空列表
dataframe['Words'] = [[] for _ in range(len(dataframe))]
# 直接赋值列表到目标单元格
dataframe.loc[x, 'Words'] = words

完整示例

以你提供的文本为例:

import pandas as pd

text = 'Today is a sunny day'
words = text.split()  # 替代循环append的简洁分词方式
df = pd.DataFrame({'OriginalText': [text]})

# 使用方法1的完整流程
df['Words'] = ''
df.at[0, 'Words'] = words

# 查看结果
print(df)
# 输出:
#          OriginalText                              Words
# 0  Today is a sunny day  [Today, is, a, sunny, day]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 03:10:10