Python Pandas:基于前序行产品版本变更规则删除冗余行数据
实现方案
核心逻辑
- 拆分产品列的内容,提取系列标识(如A、B)和数字版本号(如1、2、3),方便版本大小对比
- 按原始数据的顺序逐行遍历,为每个系列单独维护当前已出现过的最高版本号
- 逐行校验:如果当前行版本号大于等于对应系列的已记录最高版本,保留该行并更新最高版本;低于最高版本则直接丢弃
Python Pandas 实现代码
import pandas as pd # 示例:加载数据,你可以替换为自己的读数据逻辑 data = [ ["A.1", 10], ["A.1", 5], ["A.1", 1], ["A.1", 2], ["A.1", 1], ["A.2", 5], ["A.2", 1], ["A.1", 2], ["A.1", 10], ["A.2", 10], ["B.1", 1], ["B.1", 2], ["B.1", 1], ["B.3", 5], ["B.1", 1], ["B.3", 2], ["B.1", 10] ] df = pd.DataFrame(data, columns=["Product", "CycleTime"]) # 拆分系列和版本号 df[["series", "version"]] = df["Product"].str.split(".", expand=True) df["version"] = df["version"].astype(int) max_version = {} result_rows = [] for _, row in df.iterrows(): current_series = row["series"] current_ver = row["version"] if current_series not in max_version: max_version[current_series] = current_ver result_rows.append(row) else: if current_ver >= max_version[current_series]: max_version[current_series] = current_ver result_rows.append(row) # 生成最终结果 final_df = pd.DataFrame(result_rows).drop(columns=["series", "version"]).reset_index(drop=True) print(final_df)
运行上述代码输出的结果和你给出的期望结果完全一致。
内容的提问来源于stack exchange,提问作者Blue Moon
相关产品推荐
相关产品推荐

