You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言中移除数据框列名非末尾数字前的下划线

解决DataFrame列名移除非末尾数字前下划线的问题

你可以用正则表达式的负向预查实现这个需求,核心思路是只保留那些紧跟在末尾数字序列之前的下划线,其余下划线全部移除。

正则表达式说明

使用模式 _(?!\d+$):

  • _:匹配目标下划线
  • (?!\d+$):负向预查,确保下划线后面不是一串数字直接结束整个字符串。这样就只会放过最后一个下划线(因为它后面是数字+字符串结尾),其他下划线都会被匹配并替换。

Python pandas 实现示例

import pandas as pd

# 构造示例数据框
cols = ["learn_anx_1", "learn_anx_2", "learn_anx_3", "job_anx_1", "job_anx_2", "Beh_Int2_1", "Beh_Int2_2", "anxty1_1", "anxty1_2"]
df = pd.DataFrame(columns=cols)

# 修改列名
df.columns = df.columns.str.replace(r'_(?!\d+$)', '', regex=True)

# 验证结果
print(df.columns.tolist())
# 输出:['learnanx_1', 'learnanx_2', 'learnanx_3', 'jobanx_1', 'jobanx_2', 'BehInt2_1', 'BehInt2_2', 'anxty1_1', 'anxty1_2']

R 语言实现示例

如果你用R处理数据框,可用gsub结合Perl风格正则:

cols <- c("learn_anx_1", "learn_anx_2", "learn_anx_3", "job_anx_1", "job_anx_2", "Beh_Int2_1", "Beh_Int2_2", "anxty1_1", "anxty1_2")
new_cols <- gsub("_(?!\\d+$)", "", cols, perl = TRUE)
# 结果与预期一致

这个方案能兼容末尾多位数字的情况(比如xxx_123),也不会误改仅含末尾数字前下划线的列名(像anxty1_1这类)。

内容的提问来源于stack exchange,提问作者Ane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 22:55:38