1

I have dataframe (df) with column names as shown below and I want to rename it any specific name

Renaming condition:

  1. Remove the underscore -in the column name
  2. Replace the first letter coming after the - from smallcase to uppercase.

Original Column Name

df.head(1)

risk_num  start_date end_date
 12        12-3-2022  25-3-2022

Expected Column Name

df.head(1)

riskNum  startDate   endDate
 12        12-3-2022  25-3-2022

How can this donein python.

3 Answers 3

2

Use Index.map:

#https://stackoverflow.com/a/19053800/2901002
def to_camel_case(snake_str):
    components = snake_str.split('_')
    # We capitalize the first letter of each component except the first one
    # with the 'title' method and join them together.
    return components[0] + ''.join(x.title() for x in components[1:])

df.columns = df.columns.map(to_camel_case)
print (df)
   riskNum  startDate    endDate
0       12  12-3-2022  25-3-2022

Or modify regex solution for pandas:

#https://stackoverflow.com/a/47253475/2901002
df.columns = df.columns.str.replace(r'_([a-zA-Z0-9])', lambda m: m.group(1).upper(), regex=True)
print (df)
   riskNum  startDate    endDate
0       12  12-3-2022  25-3-2022
Sign up to request clarification or add additional context in comments.

Comments

2

Use str.replace:

# Enhanced by @Ch3steR
df.columns = df.columns.str.replace('_(.)', lambda x: x.group(1).upper())
print(df)

# Output
# risk_num start_date   end_date  very_long_column_name
   riskNum  startDate    endDate  veryLongColumnName
0       12  12-3-2022  25-3-2022                   0

Comments

1

The following code will do that for you

df.columns = [x[:x.find('_')]+x[x.find('_')+1].upper()+x[x.find('_')+2:] for x in df.columns]

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.