如何高效批量一次性重命名Pandas DataFrame所有列名
解决方案
你不需要手动编写df.rename(columns={})的一一映射字典,从给出的示例来看,所有待修改的列名遵循完全统一的命名规则,直接做批量字符串转换即可,列数越多这种方式的效率优势越明显,还能避免手动输入映射时的拼写错误。
方法1:pandas向量化字符串操作(推荐)
原列名格式统一为brand_spend_<品类>,转换逻辑非常清晰:
- 去掉开头固定前缀
brand_ - 将剩余字符串里的下划线全部替换为空格
- 在开头拼接
%
对应代码仅需一行:
df.columns = '% ' + df.columns.str.removeprefix('brand_').str.replace('_', ' ')
执行后列名会自动转换为你需要的'% spend kitchen'、'% spend car'、'% spend home',后续如果新增同规则的列(比如brand_spend_pet、brand_spend_outdoor),代码不需要做任何调整就能自动完成转换。
方法2:列表推导式(兼容低版本pandas)
如果你使用的pandas版本较老,没有str.removeprefix方法,可以用列表推导式实现完全相同的效果:
df.columns = [f'% {col.split("brand_", 1)[1].replace("_", " ")}' for col in df.columns]
提示:如果后续有部分列不符合这个命名规则,只需要在列表推导式里加简单的条件判断即可,灵活度比手动写映射高很多。
内容的提问来源于stack exchange,提问作者totolow
相关产品推荐
相关产品推荐

