如何将DataFrame列名中的点、星号替换为单个下划线?
解决DataFrame列名替换的连续下划线问题
问题根源
你之前用的df_check.columns.str.replace('.*.', '_')正则写法错误:正则里的.是匹配任意字符,*是匹配前字符0次或多次,这会把大片字符错误替换成下划线,完全不符合需求。
正确解决方案
你需要把.和*替换为下划线,同时合并连续的下划线,两种实现方式任选:
方法1:分两步处理
# 1. 将所有点(.)和星号(*)替换为下划线 df_check.columns = df_check.columns.str.replace(r'[.*]', '_', regex=True) # 2. 把连续的下划线合并成单个 df_check.columns = df_check.columns.str.replace(r'_+', '_', regex=True)
方法2:一步正则搞定
直接匹配一个或多个连续的./*,替换成单个下划线:
df_check.columns = df_check.columns.str.replace(r'[.*]+', '_', regex=True)
验证结果
对示例列名处理后,都会得到符合要求的结果:
- Column.name_1 → Column_name_1
- Column.name_2 → Column_name_2
- Column.*.name_3 → Column_name_3
- Column_name_4 → Column_name_4(无变化)
- Column_*_name_5 → Column_name_5
内容的提问来源于stack exchange,提问作者Tmiskiewicz
相关产品推荐
相关产品推荐

