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

Pandas如何根据DataFrame列内特定值精准重命名对应列名

解决方案

重名列下按列名批量修改会命中所有同名字段,核心解决思路是跳过列名标签匹配,直接根据列内容定位列的整数位置,再按位置修改列名,全程不受重名、列顺序变动影响。

复现测试环境

import pandas as pd
import numpy as np

# 给定的测试样例数据
data = [['name','name','number'], ['Nick','Brussels', 15], ['Tom','Paris', 14]]
df = pd.DataFrame(data)
# 执行原有第一行设为列名的逻辑,重置索引避免索引序号干扰
df = df.rename(columns=df.iloc[0]).drop(df.index[0]).reset_index(drop=True)

核心实现代码

# 1. 定位包含'Brussels'的列的整数位置:逐列判断是否存在目标值,返回匹配列的下标
target_col_index = np.where(df.eq('Brussels').any())[0][0]

# 2. 按位置直接修改列名,不会影响其他同名列
df.columns.values[target_col_index] = 'city'

执行后输出结果完全符合预期:

name      city number
0 Nick  Brussels     15
1  Tom     Paris     14

逻辑说明

  • df.eq('Brussels').any()会逐列检查是否存在目标值,返回和列数等长的布尔序列,np.where会直接取出布尔值为True的列的整数位置,全程不依赖列名做匹配
  • 直接修改df.columns.values对应下标的值,是对列名数组的原位修改,只会作用在指定位置的列上,完全规避重名列的匹配问题
  • 该逻辑适配列顺序随机变动的场景:不管城市列在哪个位置、初始列名是什么,只要列内存在确定的标识值(本场景为'Brussels'),就能精准定位修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 20:51:22