python - 在 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 捕获了你以前的组,在这种情况下,是 '_' 之前的所有内容,所以我真的不知道我在这里做错了什么。
解决方案
您不需要针对特定问题的捕获组。你可以简单地做:
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
推荐阅读
- firefox-addon - Thunderbird 67 扩展不会在主选项卡中注入内容脚本
- php - PHP 文件上传错误 (UPLOAD_ERR_PARTIAL) / $_FILES 为空或有空“tmp_name”
- java - 我的美元符号在 Android Studio 上不起作用?
- scikit-learn - fit() 缺少 1 个必需的位置参数:'self'
- python - 如何使用 pybind11 将 python tf.Tensor 转换为 C++ Tensor
- json - 在序列化 JSON 的末尾获取一个 INT
- c - 在索引 n 处用 m 次数据填充没有位域的数组
- raspberry-pi3 - 为什么我的树莓派 3 型号 b 会发疯?
- r - 用 R 中的 NA 替换数据框中的 -Inf
- flutter - 找到 androidManifest 扑腾