基于表格起止日期创建Year Bucket列的技术需求
生成年度分桶列的实现方案
针对你提供的表格数据,要根据起止日期生成对应的年度分桶列,以下是两种常用工具的实现方法:
一、Excel公式实现
假设数据在A2:C5区域(对应示例表格的行),各分桶列的公式如下:
2024列(单年度分桶):
在D2单元格输入公式,下拉填充:=IF(YEAR(B2)=YEAR(C2),IF(YEAR(B2)=2024,1,0),0)逻辑:先判断起止年份是否一致,一致且为2024则返回1,否则返回0。
2024-2025列(跨年度分桶):
在E2单元格输入公式,下拉填充:=IF(AND(YEAR(B2)=2024,YEAR(C2)=2025),1,0)逻辑:判断起始年为2024且结束年为2025时返回1,否则返回0。
2024-2028列(跨年度分桶):
在F2单元格输入公式,下拉填充:=IF(AND(YEAR(B2)=2024,YEAR(C2)=2028),1,0)逻辑:判断起始年为2024且结束年为2028时返回1,否则返回0。
二、Python Pandas实现
如果需要批量处理大量数据,用Pandas更高效,代码示例如下:
import pandas as pd # 构造示例数据(实际可替换为读取文件,如pd.read_excel()) data = { 'ID': ['A', 'B', 'C', 'D'], 'Start_Date': ['4/24/2024', '4/24/2024', '4/24/2024', '4/9/2024'], 'End-Date': ['6/2/2025', '7/1/2024', '6/2/2028', '8/2/2028'] } df = pd.DataFrame(data) # 转换日期格式并提取起止年份 df['Start_Year'] = pd.to_datetime(df['Start_Date']).dt.year df['End_Year'] = pd.to_datetime(df['End-Date']).dt.year # 生成各分桶列 df['2024'] = df.apply(lambda row: 1 if row['Start_Year'] == row['End_Year'] == 2024 else 0, axis=1) df['2024-2025'] = df.apply(lambda row: 1 if row['Start_Year'] == 2024 and row['End_Year'] == 2025 else 0, axis=1) df['2024-2028'] = df.apply(lambda row: 1 if row['Start_Year'] == 2024 and row['End_Year'] == 2028 else 0, axis=1) # 筛选并输出目标列 result = df[['ID', 'Start_Date', 'End-Date', '2024', '2024-2025', '2024-2028']] print(result)
运行后即可得到符合要求的结果表格。
内容的提问来源于stack exchange,提问作者sur
相关产品推荐
相关产品推荐

