如何将Pandas DataFrame列名从驼峰式转为大写蛇形命名
解决Pandas列名驼峰转蛇形大写的问题
要把驼峰式(比如evaluationId)的列名转换成下划线分隔的大写格式(EVALUATION_ID),只靠转大写不够,得先处理驼峰的分隔,这里给你两种简洁的实现方式:
方法一:正则表达式+自定义函数
import re import pandas as pd # 示例DataFrame df = pd.DataFrame(columns=['evaluationId', 'createdAt', 'scheduleEndDate', 'sharedTo']) def camel_to_snake_upper(col): # 在非开头的大写字母前插入下划线 snake_col = re.sub(r'(?<!^)(?=[A-Z])', '_', col) return snake_col.upper() # 批量重命名列 df.columns = [camel_to_snake_upper(col) for col in df.columns]
方法二:Pandas链式调用(更简洁)
直接利用Pandas的字符串处理方法,一行代码搞定:
df.columns = df.columns.str.replace(r'(?<!^)(?=[A-Z])', '_', regex=True).str.upper()
如果你的列名包含特殊字符,需要保留之前用的unidecode处理,可以这样整合:
from unidecode import unidecode df.columns = df.columns.map(unidecode).str.replace(r'(?<!^)(?=[A-Z])', '_', regex=True).str.upper()
效果验证
处理后你的列名会从['evaluationId', 'createdAt', 'scheduleEndDate', 'sharedTo']变为['EVALUATION_ID', 'CREATED_AT', 'SCHEDULE_END_DATE', 'SHARED_TO'],完全符合需求。
内容的提问来源于stack exchange,提问作者Leandro Miranda
相关产品推荐
相关产品推荐

