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

Pandas DataFrame重复列重命名:如何单独修改第二列并调整位置

解决方案

1. 精准重命名第二列

Pandas的rename是按列名匹配,同名列会被一起修改,所以直接操作列名列表是最稳妥的方式:

import pandas as pd

# 读取文件(以csv为例,Excel文件替换为pd.read_excel)
df = pd.read_csv("你的文件路径")

# 获取列名列表
cols = df.columns.tolist()

# 找到所有名为"Материал"的列索引,取第二个
mat_cols_idx = [i for i, col_name in enumerate(cols) if col_name == "Материал"]
if len(mat_cols_idx) >= 2:
    # 给第二列重命名为你需要的名称
    cols[mat_cols_idx[1]] = "Материал_дополнительный"

# 将修改后的列名赋值回DataFrame
df.columns = cols

2. 将重命名后的列移到指定位置

假设你要把这列移到第5个位置(索引从0开始,对应target_pos=4):

target_col = "Материал_дополнительный"
target_pos = 4  # 自定义目标位置

# 构造新的列顺序
new_cols = df.columns.tolist()
# 先移除目标列
new_cols.remove(target_col)
# 在指定位置插入目标列
new_cols.insert(target_pos, target_col)

# 重新排列DataFrame的列
df = df[new_cols]

3. 批量处理30+文件的完整脚本

把上述逻辑封装成函数,批量处理整个文件夹的文件:

import os
import pandas as pd

def process_single_file(file_path, new_col_name="Материал_дополнительный", target_pos=4):
    # 读取文件
    df = pd.read_csv(file_path)  # Excel文件替换为pd.read_excel(file_path)
    
    # 重命名第二列"Материал"
    cols = df.columns.tolist()
    mat_cols_idx = [i for i, col_name in enumerate(cols) if col_name == "Материал"]
    if len(mat_cols_idx) >=2:
        cols[mat_cols_idx[1]] = new_col_name
    df.columns = cols
    
    # 移动列到指定位置
    if new_col_name in df.columns:
        new_cols = df.columns.tolist()
        new_cols.remove(new_col_name)
        new_cols.insert(target_pos, new_col_name)
        df = df[new_cols]
    
    # 保存处理后的文件(原文件名前加processed_前缀)
    output_filename = f"processed_{os.path.basename(file_path)}"
    output_path = os.path.join(os.path.dirname(file_path), output_filename)
    df.to_csv(output_path, index=False)  # Excel文件替换为df.to_excel(output_path, index=False)
    print(f"处理完成:{output_filename}")

# 批量处理文件夹内文件
folder_path = "你的文件夹绝对路径"
for filename in os.listdir(folder_path):
    # 过滤目标文件类型,这里以csv为例
    if filename.endswith(".csv"):
        file_full_path = os.path.join(folder_path, filename)
        process_single_file(file_full_path)

这个方法直接通过列位置精准操作,不用删除再放回,对大文件友好,不会额外占用过多内存。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 21:47:21