You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在pandas中按大写字母拆分列名并转换为下划线分隔小写格式

报错原因
  • re.findall要求第二个参数必须传入字符串类型,你传入的[df.columns]是包裹了pandas列索引对象的列表,不符合参数类型要求,所以触发TypeError
  • re.findall本身只能处理单个字符串,无法直接批量处理整个列索引数组
正确实现代码

方法1:正则拆分拼接(兼容性最好,支持所有pandas版本)

先定义大驼峰转蛇形命名的工具函数,再批量应用到所有列名:

import re

def camel_to_snake(col_name):
    # 拆分所有大写字母开头的片段
    name_parts = re.findall('[A-Z][^A-Z]*', col_name)
    # 全小写后用下划线拼接
    return '_'.join(part.lower() for part in name_parts)

# 批量处理所有列名
df.columns = [camel_to_snake(col) for col in df.columns]

方法2:pandas字符串方法(pandas 1.4+版本可用,代码更简洁)

直接用pandas内置的字符串替换方法实现,无需额外循环:

# 小写字母和大写字母的间隙插入下划线后整体转小写
df.columns = df.columns.str.replace(r'(?<=[a-z])(?=[A-Z])', '_', regex=True).str.lower()

两种方法处理你的样例列名ProjectNo、DescriptionOfDesign都会得到预期的project_no、description_of_design效果。

内容的提问来源于stack exchange,提问作者yangyang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 13:15:03