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

在Pandas中实现列偏移与行扩展:指定列移位并填充NaN

使用Pandas实现DataFrame指定列偏移并补全NaN

核心解决方案

通过调整列的索引并重新对齐,实现指定列的偏移,同时保留另一列的原有数据并补全新增行的NaN。

代码示例

import pandas as pd

# 构造示例原始DataFrame
df = pd.DataFrame({'A': [1, 2, 3, 4, 5], 'B': ['a', 'b', 'c', 'd', 'e']})

# 定义偏移步数,可根据需求修改
offset_steps = 2
# 计算最终结果的索引范围(原行数 + 偏移步数)
new_index = range(len(df) + offset_steps)

# 处理A列:保留原索引的数值,新增索引填充NaN
new_A = df['A'].reindex(new_index)
# 若需要保持A列为整数类型(支持NaN),可改用:
# new_A = df['A'].reindex(new_index).astype('Int64')

# 处理B列:将原列索引偏移指定步数后,重新对齐到新索引,空缺填充NaN
new_B = df['B'].set_index(df.index + offset_steps).reindex(new_index)

# 合并得到最终结果
result = pd.DataFrame({'A': new_A, 'B': new_B})
print(result)

输出结果

A    B
0  1.0  NaN
1  2.0  NaN
2  3.0    a
3  4.0    b
4  5.0    c
5  NaN    d
6  NaN    e

关键步骤说明

  1. 确定新索引范围:因为要将B列向下偏移2步,且需保留所有原B列元素,最终结果的总行数为原行数 + 偏移步数,索引范围对应从0到原行数+偏移步数-1。
  2. 处理A列:用reindex方法扩展A列到新索引范围,原索引0-4的数值保持不变,新增的索引位置自动填充NaN。
  3. 处理B列:先通过set_index(df.index + offset_steps)将原B列每个元素的索引向后偏移指定步数,再用reindex对齐到新索引范围,前端空缺位置自动填充NaN,同时完整保留所有原B列元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 23:53:10