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

如何在R语言中拆分含额外信息的Year列?

拆分Year列的年份与额外信息

基于Python Pandas的解决方案

针对Year列同时包含年份(或年份范围)与额外描述的情况,用正则表达式提取是最直接的方式,以下是两种适配不同格式的实现:

方法1:适配带括号的额外信息

如果你的Year列主要是「年份/年份范围 + (额外信息)」的格式(比如2018 (Special Issue)、2016–2017),可以用str.extract一次性拆分出两列:

import pandas as pd

# 读取数据集(根据实际文件格式调整,如xlsx)
df = pd.read_csv("your_data.csv")

# 正则提取年份/年份范围、括号内的额外信息
df[["Year_Cleaned", "Extra_Info"]] = df["Year"].str.extract(r"^(\d{4}(?:–\d{4})?)(?:\s*\((.*)\))?$")

# 填充空值为空白字符串
df["Extra_Info"] = df["Extra_Info"].fillna("")

# 查看拆分结果
print(df[["Year", "Year_Cleaned", "Extra_Info"]])

正则说明:

  • ^(\d{4}(?:–\d{4})?):匹配开头的纯年份或年份范围(如2016或2016–2017),作为清理后的年份列
  • (?:\s*\((.*)\))?$:匹配可选的括号内容,提取括号内的文本作为额外信息列,非捕获组(?:...)避免生成多余列

方法2:适配更复杂的无括号格式

如果Year列存在无括号的额外信息(比如2020 - 特别版),可以按「数字+连接符」的边界拆分:

import pandas as pd

df = pd.read_csv("your_data.csv")

# 提取年份/年份范围部分
df["Year_Cleaned"] = df["Year"].str.extract(r"^([\d–]+)")

# 移除年份部分,剩余内容作为额外信息
df["Extra_Info"] = df["Year"].str.replace(r"^[\d–]+\s*", "", regex=True)

# 清理空值
df["Extra_Info"] = df["Extra_Info"].replace("", pd.NA).fillna("")

验证结果

运行代码后,你可以通过df.head()查看拆分后的列,确认是否符合预期。如果还有特殊格式没覆盖,你可以提供具体的Year列示例,再调整正则表达式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 04:35:25