如何重命名DataFrame列:移除最后斜杠前所有字符,保留无斜杠列原名
处理DataFrame含斜杠列名的重命名方法
针对你提到的需求,有两种简洁的实现方式,既能保留无斜杠的列名,又能提取含斜杠列名的最后一段内容:
方法一:使用rename配合lambda函数
通过lambda函数遍历每个列名,根据是否包含斜杠做对应处理:
import pandas as pd # 构造示例DataFrame df = pd.DataFrame({ 'ot1/pr1/cp1/dkjsakhka': [1, 2, 3], 'gt2/pr1/fl1/ct4/rmt12/dasljdals': [4, 5, 6], 'normal_col': [7, 8, 9] }) # 执行重命名 df.rename(columns=lambda x: x.split('/')[-1] if '/' in x else x, inplace=True)
- 逻辑:对每个列名,若包含斜杠则用
split('/')分割成字符串列表,取最后一个元素;无斜杠则直接保留原名称。 inplace=True会直接修改原DataFrame,若不想改动原数据,可去掉该参数并将结果赋值给新变量。
方法二:利用pandas列名的字符串属性处理
这种方法更简洁,无需额外判断——无斜杠的列名分割后列表仅含自身元素,取最后一个元素就是原名称:
df.columns = df.columns.str.split('/').str[-1]
- 逻辑:
df.columns.str.split('/')将每个列名按斜杠分割为列表,str[-1]直接提取每个列表的最后一个元素,一步完成所有列名的处理。
内容的提问来源于stack exchange,提问作者DeltaIV
相关产品推荐
相关产品推荐

