import datetime
import re
import pandas as pd
def extract_year(date_str):
if not isinstance(date_str, str):
return None
for year in range(1950, 2023):
if str(year) in date_str:
return year
# 如果前面的循环不能识别出年份,就执行下面的语句
if "-" in date_str:
# 使用正则表达式匹配任意非数字、字母和空格字符作为分隔符
year_str = re.split(r"\D+", date_str)[-1].strip()
if len(year_str) == 0:
return None
elif len(year_str) == 2:
year = int(year_str)
return 2000 + year if year <= datetime.datetime.now().year % 100 else 1900 + year
else:
return int(year_str)
else:
return None # 如果日期格式无法识别,则返回 None
df = pd.read_excel(r'C:\Users\win10\Desktop\(2).xlsx')
# 将日期字符串转换为年份,并添加为新的一列
df['year'] = df['art_date'].apply(extract_year)
# 删除年份为空的行
df.dropna(subset=['year'], inplace=True)
# 统计各年份的数量并按照数量降序排列
result = df['year'].astype(int).value_counts().sort_values(ascending=False).reset_index()
# 重命名列名
result.columns = ['年份', '数量']
# 创建新的 Excel 文件并写入数据
result.to_excel(r'C:\Users\win10\Desktop\new_excel_file.xlsx', index=False)