如何在Python中为Excel数据框每隔两列插入新列?
在Python中为DataFrame每隔两列插入新列的解决方案
假设你已经用pandas读取了Excel数据,得到了DataFrame对象df,可以通过以下两种方式实现需求:
方法一:倒序循环插入(推荐)
从最后一组列开始倒着插入新列,避免因插入操作导致的列索引偏移问题:
import pandas as pd import numpy as np # 读取Excel数据 df = pd.read_excel('你的文件路径.xlsx') # 从倒数第二组列开始倒序遍历,步长为-2 for i in range(len(df.columns) - 2, -1, -2): # 定义新列名,可根据需求修改 new_col_name = f'New_Col_{(i // 2) + 1}' # 在第i+2的位置插入新列,默认值设为NaN(可替换为0、空字符串等) df.insert(i + 2, new_col_name, np.nan)
逻辑说明:
- 倒序循环的核心是避免插入操作影响后续的索引定位:如果正序插入,每插入一列会让后面所有列的索引+1,导致下一次插入位置出错;倒序处理时,已插入的列不会干扰未处理的列索引。
- 示例:原列顺序为
A、B、D、E、G、H,执行后会变成A、B、New_Col_1、D、E、New_Col_2、G、H、New_Col_3,完全匹配你的需求。
方法二:构建新列顺序后重排
先生成包含新列的完整列顺序列表,再重新排列DataFrame的列:
import pandas as pd import numpy as np df = pd.read_excel('你的文件路径.xlsx') original_cols = df.columns.tolist() new_cols = [] for idx in range(0, len(original_cols), 2): # 添加当前的两列 new_cols.extend(original_cols[idx:idx+2]) # 若不是最后一组列,添加新列并初始化 if idx + 2 <= len(original_cols): new_col_name = f'New_Col_{(idx // 2) + 1}' new_cols.append(new_col_name) df[new_col_name] = np.nan # 按新列顺序重新排列DataFrame df = df[new_cols]
注意事项:
- 两种方法都支持自定义新列的默认值,只需把
np.nan替换为你需要的内容(比如0、"待填充"等)。 - 如果你的Excel列数不是偶数,最后一组只有1列的话,代码会自动跳过插入操作(因为
idx+2 <= len(original_cols)的条件不满足)。
内容的提问来源于stack exchange,提问作者Maria I
相关产品推荐
相关产品推荐

