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

Python中如何从指定索引位置开始生成新列表及pandas序列

实现方案

你需要的是pandas序列的错位赋值需求,直接用内置的shift()方法即可实现,不需要手动循环,效率更高也不会出现索引错位问题。

场景1:新序列Longitud_max的第n位对应原序列Longitud_min的第n-1位(即索引1开始对应原序列索引0,索引2对应原序列索引1,以此类推)

# 偏移1位,索引0默认返回NaN,如果需要填充指定值可追加fillna方法
df['Longitud_max'] = df['Longitud_min'].shift(1)
# 示例:索引0填充原序列索引1的取值
df['Longitud_max'] = df['Longitud_min'].shift(1).fillna(df['Longitud_min'].iloc[1])

场景2:新序列Longitud_max从索引2开始对应原序列Longitud_min的内容(即索引2对应原序列索引0,索引3对应原序列索引1,以此类推)

# 偏移2位,前2位默认返回NaN,可按需填充
df['Longitud_max'] = df['Longitud_min'].shift(2)
# 示例:前两位填充原序列的前两位取值
df['Longitud_max'] = df['Longitud_min'].shift(2).fillna(method='backfill')

手动循环实现方案(不推荐)

你之前的代码逻辑出错是因为没有提前初始化等长列表,且遍历的是原序列所有元素而非从指定索引开始遍历,修正后写法如下:

# 先初始化和原序列长度一致的空列表
Longitud_max = [None] * len(df)
# 按需求给前两个位置赋值,示例前两位保留原序列的前两位
Longitud_max[0] = df['Longitud_min'].iloc[0]
Longitud_max[1] = df['Longitud_min'].iloc[1]
# 从索引2开始填充原序列从索引0开始的内容
for i in range(2, len(df)):
    Longitud_max[i] = df['Longitud_min'].iloc[i-2]
df['Longitud_max'] = Longitud_max

内容的提问来源于stack exchange,提问作者Services Puzzles Consulting

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 07:24:03