使用Python(Pandas DataFrame)拆分CSV列:提取年份新增列
解决方案:提取CSV中的年份并新增列
没问题,这个需求用Python就能轻松实现,我给你两种常用的方案,你可以根据自己的情况选择:
方案一:使用Pandas(推荐,适合数据量较大的情况)
Pandas是Python处理表格数据的神器,代码简洁高效,步骤如下:
- 首先确保你已经安装了Pandas,如果没有的话,在终端执行:
pip install pandas
- 编写处理代码:
import pandas as pd import re # 读取原始CSV文件,替换成你的输入文件路径 df = pd.read_csv('your_input.csv') # 定义一个提取年份的函数:匹配括号内的四位数字 def get_year(text): # 用正则表达式查找格式为(XXXX)的年份,提取括号内的四位数字 year_match = re.search(r'\((\d{4})\)', str(text)) # 如果匹配到就返回年份,否则返回空值 return year_match.group(1) if year_match else None # 新增名为Year的第三列,将提取逻辑应用到第二列(Pandas列索引从0开始,第二列是iloc[:,1]) df['Year'] = df.iloc[:, 1].apply(get_year) # 保存处理后的结果到新CSV,index=False表示不保存行索引 df.to_csv('your_output.csv', index=False)
代码说明:
- 正则表达式
r'\((\d{4})\)'专门匹配(四位数字)的格式,精准提取年份 str(text)确保即使第二列有非字符串类型的数据也不会报错- 如果某些行的第二列没有符合格式的年份,会自动填充
None(保存到CSV里就是空单元格)
方案二:使用Python原生CSV模块(无需额外安装库)
如果你不想安装第三方库,用Python自带的csv模块也能实现:
import csv import re # 打开输入和输出文件,注意替换成你的文件路径 with open('your_input.csv', 'r', newline='', encoding='utf-8') as in_file, \ open('your_output.csv', 'w', newline='', encoding='utf-8') as out_file: csv_reader = csv.reader(in_file) csv_writer = csv.writer(out_file) # 处理表头:新增Year列名 header_row = next(csv_reader) header_row.append('Year') csv_writer.writerow(header_row) # 逐行处理数据 for row in csv_reader: # 确保第二列存在(避免索引越界) if len(row) >= 2: column_text = row[1] year_match = re.search(r'\((\d{4})\)', str(column_text)) extracted_year = year_match.group(1) if year_match else '' else: extracted_year = '' # 将年份添加到当前行,写入输出文件 row.append(extracted_year) csv_writer.writerow(row)
注意事项:
- 如果你的CSV文件有特殊编码(比如GBK),可以调整
encoding参数 - 要是遇到年份格式不统一的情况(比如有两位年份、或者括号外的年份),可以修改正则表达式来适配,比如如果需要匹配
19XX或20XX,可以把正则改成r'\((19|20)\d{2}\)'
内容的提问来源于stack exchange,提问作者Nash_per




