Python Pandas如何将列表元素循环重复赋值给DataFrame列
实现循环赋值的两种解决方案
假设你的DataFrame变量名为df,可迭代对象为x = (1,2,3,4,5,6,7,8),可以用以下两种方法实现需求:
方法1:列表推导式(写法简洁,适合小体量数据)
直接通过行索引对x的长度取模定位取值即可:
x_len = len(x) # 新建列存储循环值,赋值给已有列直接替换左侧列名即可 df["cycle_val"] = [x[i % x_len] for i in range(len(df))]
方法2:Numpy tile 方法(性能更优,适合超大量级数据)
提前生成足够长度的重复数组再截断,处理百万级行数据效率远高于列表推导式:
import numpy as np x_len = len(x) total_rows = len(df) # 计算重复次数,多重复1次避免长度不足 repeat_cnt = total_rows // x_len + 1 df["cycle_val"] = np.tile(x, repeat_cnt)[:total_rows]
两种方法都能满足前8行依次填入1-8,第9行及之后从头循环的要求,按需选择即可。
内容的提问来源于stack exchange,提问作者Varga Bence
相关产品推荐
相关产品推荐

