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

如何向已有DataFrame插入空列并实现列批量右移x位?

问题描述

现有如下DataFrame:

data = [[5011025, 234], [5012025, 937], [5013025, 625]]
df = pd.DataFrame(data)

输出结果为:

0    1
0  5011025  234
1  5012025  937
2  5013025  625

需要在位置0插入一个包含三个空格的新列(行数与原DataFrame一致),重新创建的示例如下:

data = [['   ',5011025, 234], ['   ',5012025, 937], ['   ',5013025, 625]]
df = pd.DataFrame(data)

期望输出:

0        1    2
0       5011025  234
1       5012025  937
2       5013025  625

请问如何使用insert()方法在可能有数百行的现有DataFrame中实现该操作?最终希望编写一个能将DataFrame所有列向右移动x个位置的函数。


解决方案

1. 单次插入指定列(位置0插入三空格列)

直接调用DataFrame.insert()方法,指定插入位置为0,列名暂时用0,值为重复的三空格字符串即可:

import pandas as pd

data = [[5011025, 234], [5012025, 937], [5013025, 625]]
df = pd.DataFrame(data)

# 在位置0插入三空格列
df.insert(loc=0, column=0, value='   ')
print(df)

运行后输出与期望一致:

0        1    2
0       5011025  234
1       5012025  937
2       5013025  625

2. 通用函数:将所有列向右移动x个位置

编写循环调用insert()的函数,实现批量插入填充列,让原列整体右移x位:

def shift_columns_right(df, x, fill_value='   '):
    # 复制原DataFrame,避免修改原始数据
    shifted_df = df.copy()
    for _ in range(x):
        # 每次在最左侧插入填充列
        shifted_df.insert(loc=0, column=f'temp_{_}', value=fill_value)
    # 重新设置列名,保证从0开始连续递增
    shifted_df.columns = range(shifted_df.shape[1])
    return shifted_df

# 测试:将列向右移动2个位置
data = [[5011025, 234], [5012025, 937], [5013025, 625]]
df = pd.DataFrame(data)
result_df = shift_columns_right(df, 2)
print(result_df)

输出结果:

0     1        2    3
0           5011025  234
1           5012025  937
2           5013025  625

说明

  • loc=0确保每次都在最左侧插入列,从而实现原列整体右移
  • fill_value可自定义填充内容,默认是三个空格
  • 函数先复制原DataFrame,避免操作影响原始数据
  • 最后重置列名,保证列名从0开始连续有序

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 03:15:07