批量移除Pandas数据框列名中的数字后缀
批量移除Pandas数据框列名中的数字后缀
嗨,这种批量处理列名的需求完全不用手动一个个rename,太浪费时间了!结合你给出的列名例子,这里有几个高效的方法,一行代码就能搞定所有28列:
方法1:按分隔符拆分(最适合你的场景)
从你的例子看,列名都是用|分隔名称和数字的,直接按这个分隔符拆分,取前面的名称部分就行,还能顺便去掉前后多余的空格:
df.columns = df.columns.str.split('|').str[0].str.strip()
解释下:
str.split('|')把每个列名按竖线分割成两部分的列表str[0]提取列表里的第一个元素(也就是你要保留的名称)str.strip()去掉名称前后的空格,比如把" Alcoholic Beverages "变成"Alcoholic Beverages"
方法2:用正则表达式替换(更通用)
如果你的列名格式偶尔有变化(比如分隔符不是|,或者数字位置不一样),可以用正则匹配并替换掉数字部分:
df.columns = df.columns.str.replace(r'\s*\|\s*\d+', '', regex=True)
这个正则的意思是:匹配|(前后可能带空格)加上后面的一串数字,把这整个部分替换成空字符串,直接保留前面的名称。
要是你的列名是名称直接跟数字(没有|),比如"Miscellaneous group00002928",可以用这个:
df.columns = df.columns.str.replace(r'\d+$', '', regex=True).str.strip()
它会匹配列名末尾的所有数字,替换为空,再去掉多余空格。
这些方法都是一次性处理所有列,完全不用写28行rename,在Colab里一行代码就搞定,既简洁又高效~
备注:内容来源于stack exchange,提问作者Joelle Kappert
相关产品推荐
相关产品推荐

