分组内pair对过滤:筛选首元素为Code值2的对应数据行
实现逻辑及代码示例
核心逻辑步骤
- 按
Group字段分组,保留组内原始行顺序 - 每组内生成
Code列的上移偏移列(可命名为next_code),此时每行的Code和next_code就组成了相邻pair对 - 筛选出所有
Code == 2的行(即pair首元素为2的首行),同时将这些行对应的下一行也纳入保留集合 - 对保留的行去重后按原始顺序输出即可
具体实现(Python Pandas 示例)
首先构造输入数据集:
import pandas as pd # 构造输入数据 data = { "Group": [1,1,1,1,2,2,2,2,2,2,2], "Code": [2,2,4,1,4,1,2,3,1,1,3] } df = pd.DataFrame(data)
执行过滤逻辑:
# 按Group分组,生成每组内的下一行Code值 df["next_code"] = df.groupby("Group")["Code"].shift(-1) # 筛选符合条件的pair首行 filter_rows = df[df["Code"] == 2] # 收集要保留的行索引:首行索引 + 首行对应的下一行索引 keep_index = [] for idx in filter_rows.index: keep_index.append(idx) keep_index.append(idx + 1) # 去重后按原始索引排序,取对应列输出 result = df.loc[list(set(keep_index))].sort_index()[["Group", "Code"]] print(result)
运行输出结果和预期完全一致:
Group Code 0 1 2 1 1 2 2 1 4 6 2 2 7 2 3
内容的提问来源于stack exchange,提问作者tj judge
相关产品推荐
相关产品推荐

