按EMPL_NO分组对CSV日期按90天间隔归类的实现方法咨询
实现方案
你可以通过Python的pandas库快速完成该需求,具体实现步骤如下:
依赖安装
如果未安装pandas,先执行安装命令:
pip install pandas
完整实现代码
import pandas as pd from datetime import timedelta # 读取CSV文件,替换为你本地的文件路径 df = pd.read_csv('test.csv') # 转换日期字段为datetime格式,方便计算时间差 df['DATE_INTERNE_INSPECTION'] = pd.to_datetime(df['DATE_INTERNE_INSPECTION']) result = [] # 按EMPL_NO主键分组处理每个员工的日期 for empl_no, group in df.groupby('EMPL_NO'): # 对当前员工的所有日期按升序排序 sorted_dates = group['DATE_INTERNE_INSPECTION'].sort_values().tolist() if not sorted_dates: continue # 初始化第一个分组 current_group = [sorted_dates[0]] current_group_start = sorted_dates[0] # 遍历剩余日期分组 for dt in sorted_dates[1:]: # 和当前分组的起始日期差值≤90天则归入当前组 if (dt - current_group_start).days <= 90: current_group.append(dt) # 差值超过90天则保存当前组,创建新分组 else: result.append([empl_no] + [d.strftime('%Y-%m-%d') for d in current_group]) current_group = [dt] current_group_start = dt # 保存最后一个未处理的分组 result.append([empl_no] + [d.strftime('%Y-%m-%d') for d in current_group]) # 打印输出结果 for item in result: print(', '.join(map(str, item))) # 【可选】将结果写入新的CSV文件 # output_df = pd.DataFrame(result) # output_df.to_csv('date_group_result.csv', index=False, header=False)
运行输出
执行后输出结果和你预期的一致:
5, 2023-05-29, 2023-06-03, 2023-06-05 5, 2024-05-29, 2024-06-03, 2024-06-05 5, 2026-06-05 12, 2021-06-05 12, 2023-06-05
内容的提问来源于stack exchange,提问作者Chadi N
相关产品推荐
相关产品推荐

