如何用Python在Excel中基于ID识别名称变回原始值的记录
用Python筛选Excel中名称先修改后还原的ID
需求说明
给定包含ID、Name、Date三列的Excel数据,需筛选出ID对应的名称先从初始值修改,之后又变回初始值的记录,最终仅返回符合条件的ID(如示例中的999)。
实现步骤
1. 安装依赖
需要用到pandas处理数据,openpyxl读取Excel文件,执行以下命令安装:
pip install pandas openpyxl
2. 代码实现
import pandas as pd # 读取Excel文件,替换为你的文件路径 df = pd.read_excel('your_data.xlsx') # 将Date列转为日期类型,确保按时间顺序排序 df['Date'] = pd.to_datetime(df['Date']) # 按ID分组,每组内按日期排序 grouped_data = df.sort_values('Date').groupby('ID') # 判断单个ID组是否符合条件的函数 def check_reverted_name(group): name_sequence = group['Name'].tolist() original_name = name_sequence[0] modified_flag = False # 遍历后续名称,检查是否出现"初始值→修改值→初始值"的过程 for name in name_sequence[1:]: if name != original_name: modified_flag = True # 一旦检测到修改后又回到初始值,立即返回True elif modified_flag and name == original_name: return True return False # 筛选符合条件的ID并去重 qualified_ids = grouped_data.filter(check_reverted_name)['ID'].unique() # 整理成结果DataFrame并输出 result = pd.DataFrame({'ID': qualified_ids}) print(result) # 可选:将结果保存到Excel # result.to_excel('qualified_ids.xlsx', index=False)
3. 示例运行结果
执行代码后,输出结果如下:
| ID |
|---|
| 999 |
内容的提问来源于stack exchange,提问作者Vicky
相关产品推荐
相关产品推荐

