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

将嵌套列表转为Pandas DataFrame行并新增列时遇长度匹配错误

解决Pandas赋值嵌套列表到新列的长度不匹配问题

嘿,我明白你遇到的麻烦了——直接把嵌套列表pred赋值给DataFrame的新列时,Pandas把整个子列表当成了单个单元格的值,导致长度不匹配报错。别担心,咱们一步一步解决它:

问题根源

你的嵌套列表pred是按组存储预测结果的(比如每个子列表对应sent列的一个分组),但DataFrame的行数是所有分组的行总和。直接赋值时,Pandas会认为你要给每行塞一个子列表,可pred的长度是子列表的数量(比如2个),远小于DataFrame的总行数(比如6行),自然就抛出ValueError了。

解决方案:先展开嵌套列表

我们需要把嵌套列表扁平化成一维列表,让每个元素对应DataFrame的一行。用Python的列表推导式就能轻松实现:

示例代码

import pandas as pd

# 模拟你的原始DataFrame
df = pd.DataFrame({
    'sent': [0, 0, 0, 1, 1, 1],
    'token': ['a', 'b', 'b', 'a', 'b', 'c']
})

# 你的预测嵌套列表
pred = [['b', 'c', 'd'], ['b', 'a', 'u']]

# 扁平化嵌套列表
flattened_pred = [item for sublist in pred for item in sublist]

# 赋值到新列
df['pred'] = flattened_pred

# 查看结果
print(df)

运行结果

sent token pred
0     0     a    b
1     0     b    c
2     0     b    d
3     1     a    b
4     1     b    a
5     1     c    u

关键注意事项

一定要确保嵌套列表所有子列表的长度之和等于DataFrame的总行数,否则还是会出现长度不匹配的错误。如果不一致,你需要检查预测算法的输出是否和DataFrame的行分组对应(比如每个sent分组的行数是否和pred中对应子列表的长度一致)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:41:06