将数据帧列名称从驼峰式命名法转换为蛇形命名法

Lea*_*nda 1 python camelcasing dataframe pandas snakecasing

我想更改 Pandas DataFrame 的列标签

['evaluationId' , 'createdAt', 'scheduleEndDate', 'sharedTo', ...]
Run Code Online (Sandbox Code Playgroud)

['EVALUATION_ID', 'CREATED_AT', 'SCHEDULE_END_DATE', 'SHARED_TO',...]
Run Code Online (Sandbox Code Playgroud)

我有很多具有此模式“aaaBb”的列,我想创建重命名列的此模式“AAA_BB”

我尝试过类似的东西:

new_columns = [unidecode(x).upper() for x in df.columns]
Run Code Online (Sandbox Code Playgroud)

但我不知道如何创建解决方案。

moz*_*way 6

您可以使用正则表达式str.replace来检测小写字母转换并插入_, then str.upper

df.columns = (df.columns
                .str.replace('(?<=[a-z])(?=[A-Z])', '_', regex=True)
                .str.upper()
             )
Run Code Online (Sandbox Code Playgroud)

前:

  evaluationId createdAt scheduleEndDate sharedTo
0          NaN       NaN             NaN      NaN
Run Code Online (Sandbox Code Playgroud)

后:

  EVALUATION_ID CREATED_AT SCHEDULE_END_DATE SHARED_TO
0           NaN        NaN               NaN       NaN
Run Code Online (Sandbox Code Playgroud)