首页 > 解决方案 > 在 Python 中使用正则表达式重命名列

问题描述

我正在尝试在 Python 中重命名我的 df 中的一堆列。因为有超过 1000 个应该重命名,所以我尝试用正则表达式来做,因为我看到 Python 允许你这样做。更具体地说,应重命名以 _Sum 结尾的每一列,将 _Sum 部分替换为“_max”(例如:column1_Sum -> column1_max)。我试过以下代码:

df = df.rename(columns=lambda x: re.sub('(.+)_Sum$','$1_max',x))

但它只是用'$1_max'字面替换每个列名。我以前在其他程序中使用过正则表达式,我一直认为 $1 捕获了你以前的组,在这种情况下,是 '_' 之前的所有内容,所以我真的不知道我在这里做错了什么。

标签: pythonregexpandasrename

解决方案


您不需要针对特定​​问题的捕获组。你可以简单地做:

df.columns = df.columns.str.replace('_Sum$', '_max')

如果您最终确实需要捕获组,您可以使用以下内容:

df.columns.str.replace('(.+)_Sum$', lambda x: f'{x.group(1)}_max')

见:https ://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.str.replace.html


推荐阅读