组内pair过滤需求:筛选两端同时包含2和4的配对数据
分组Code配对过滤问题说明
原始数据
现有如下分组Code配对数据:
Group Code 1 2 1 2 1 4 1 1 2 4 2 1 2 2 2 3 2 1 2 1 2 3
处理规则
- 配对规则:同一分组内按顺序每两行组成一个pair,例如Group 1中的pair依次为(2,2)、(2,4)、(4,1)
- 过滤规则:仅保留pair内同时存在code值2和4的配对,仅包含其中一个值或者两个都不包含的配对直接过滤
效果示例
Group 1中只有(2,4)符合过滤要求,其余两个配对都会被过滤,最终输出结果如下:
Group Code 1 2 1 4
Python实现参考
import pandas as pd # 读取原始数据,支持空格分隔的文本文件 df = pd.read_csv('your_data_path.txt', sep='\s+', dtype={'Group': int, 'Code': int}) result_list = [] # 按分组遍历处理 for group_id, group_data in df.groupby('Group'): code_list = group_data['Code'].tolist() # 每两行组成一个pair遍历 for idx in range(0, len(code_list), 2): if idx + 1 >= len(code_list): break current_pair = {code_list[idx], code_list[idx+1]} # 判断是否同时包含2和4 if current_pair == {2,4}: result_list.append(group_data.iloc[idx:idx+2]) # 输出结果 if result_list: output_df = pd.concat(result_list) print(output_df.to_string(index=False)) else: print("无符合条件的配对")
内容的提问来源于stack exchange,提问作者tj judge
相关产品推荐
相关产品推荐

