如何根据列名条件批量重命名Pandas DataFrame中的大量列
解决方案
你可以通过判断列名是否为数字的规则批量生成重命名映射,不需要手动逐个指定,以下是两种常用实现方式:
方法1:使用lambda表达式一键重命名
直接在rename方法中传入匿名函数做列名判断,写法最简洁:
# 自动识别所有数字列,重命名为Role+数字格式,非数字列保持原名 df.rename(columns=lambda x: f"Role{x}" if str(x).isdigit() else x, inplace=True)
该写法兼容列名为整数类型(0/1/2)和字符串类型("0"/"1"/"2")的两种情况,适配XML解析后列名长度不固定的场景。
方法2:先筛选后生成映射(适配复杂规则)
如果需要额外加过滤规则、避免误改其他数字命名的非目标列,可以先筛选目标列再生成重命名字典:
# 第一步:筛选出所有需要重命名的数字列 target_cols = [col for col in df.columns if str(col).isdigit()] # 第二步:生成重命名映射字典 rename_mapper = {col: f"Role{col}" for col in target_cols} # 第三步:执行重命名 df.rename(columns=rename_mapper, inplace=True)
如果后续需要加规则,比如仅重命名数字大于等于0、或者数字小于某阈值的列,只需要在列表生成式的判断条件中补充逻辑即可。
内容的提问来源于stack exchange,提问作者Prasoon Shukla
相关产品推荐
相关产品推荐

