[英]How to rename dataframe columns in specific way in Python
I have dataframe (df)
with column names as shown below and I want to rename it any specific name我有 dataframe (df)
,其列名如下所示,我想将其重命名为任何特定名称
Renaming condition:更名条件:
-
in the column name删除列名中的下划线-
-
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) df.head(1)
riskNum startDate endDate
12 12-3-2022 25-3-2022
How can this donein python.这怎么能在python中完成。
#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:或者修改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
Use str.replace
:使用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
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]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.