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

Pandas如何将列表循环填充为DataFrame新列匹配总行数

报错根因

你写的cat_list * len(df)存在长度计算错误:cat_list本身长度是3,和整数len(df)做乘法后,得到的列表总长度是3 * len(df),和DataFrame的行数len(df)不相等,自然会报长度不匹配的错误。

可直接运行的修正代码

方案1:纯Python实现,无需引入额外依赖

只需要先计算足够覆盖DataFrame行数的重复次数,拼接后截断到和DataFrame等长即可:

cat_list = ['a', 'b', 'ab']
# 向上取整计算重复次数,保证拼接后的列表长度不小于df行数
repeat_count = len(df) // len(cat_list) + 1
df['category'] = (cat_list * repeat_count)[:len(df)]

方案2:numpy实现,代码更简洁

pandas环境默认预装numpy,可以直接用np.tile实现序列重复:

import numpy as np
cat_list = ['a', 'b', 'ab']
df['category'] = np.tile(cat_list, len(df) // len(cat_list) + 1)[:len(df)]

方案3:迭代器实现,大文件场景内存占用更低

当DataFrame行数特别大时,可以用itertools.cycle构造循环迭代器,逐行生成填充值,不需要提前构造完整列表:

from itertools import cycle
cat_list = ['a', 'b', 'ab']
loop_cats = cycle(cat_list)
df['category'] = [next(loop_cats) for _ in range(len(df))]

以上三种方案都可以实现预期的循环填充效果,填充顺序完全匹配示例:第一行填a、第二行填b、第三行填ab,之后循环往复直到最后一行。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 01:45:43