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

技术咨询:如何从wave_year变量提取年份前内容并创建新变量(移除末尾四位数字)

解决方法:从wave_year变量移除末尾四位数字

嗨~看你的需求,是要从wave_year列里去掉末尾的四位年份数字,保留前面的内容对吧?这里给你几种简单直接的方法,分Python(Pandas)和R两种常用数据分析工具来介绍:

Python(Pandas)场景

方法1:字符串切片(最简便)

因为目标是固定移除最后四位,直接用字符串切片就能搞定,代码简洁高效:

df['new_variable'] = df['wave_year'].str[:-4]

举个例子:如果wave_year的值是wave2023,处理后得到wave;如果是wave0012023,结果就是wave001,完全符合你的需求。

方法2:正则表达式(适配复杂格式)

如果你的wave_year格式偶尔有变化,正则表达式能更精准地定位末尾的四位数字并移除:

import re
df['new_variable'] = df['wave_year'].apply(lambda x: re.sub(r'\d{4}$', '', x))

这里\d{4}$的意思是匹配字符串末尾的四位数字,用空字符串替换就完成了移除操作。

R语言场景

方法1:字符串截取

基础R和stringr包都能轻松实现:

# 基础R写法
df$new_variable <- substr(df$wave_year, 1, nchar(df$wave_year)-4)

# stringr包(更直观)
library(stringr)
df$new_variable <- str_sub(df$wave_year, end = -5)

注:str_sub里的end=-5表示截取到倒数第五位,刚好去掉最后四位数字。

方法2:正则表达式

用gsub函数匹配并替换末尾四位数字:

df$new_variable <- gsub("\\d{4}$", "", df$wave_year)

小提示

如果你的wave_year列不是字符串类型,记得先转成字符串:

  • Pandas:df['wave_year'] = df['wave_year'].astype(str)
  • R:df$wave_year <- as.character(df$wave_year)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 15:07:27