如何在Pandas中筛选包含Type 1的系统分组数据?
Pandas筛选包含特定值的分组所有行
方法一:使用groupby + transform(保留分组上下文)
这种方法会为每一行标记其所在分组是否包含Type=1,再通过标记筛选目标行:
import pandas as pd data = [['A', 1], ['A', 2], ['A', 2],['A',3],['B',1],['B',2],['C',2],['C',3],['D',3]] df = pd.DataFrame(data, columns=['System', 'Type']) # 为每行生成所在分组是否包含Type=1的布尔值 has_type1 = df.groupby('System')['Type'].transform(lambda x: (x == 1).any()) # 筛选符合条件的行 filtered_df = df[has_type1] print(filtered_df)
方法二:先提取有效分组再过滤(逻辑更直观)
先找出所有包含Type=1的System,再直接过滤这些分组的所有行:
import pandas as pd data = [['A', 1], ['A', 2], ['A', 2],['A',3],['B',1],['B',2],['C',2],['C',3],['D',3]] df = pd.DataFrame(data, columns=['System', 'Type']) # 获取所有包含Type=1的System列表 valid_systems = df[df['Type'] == 1]['System'].unique() # 筛选System属于有效列表的所有行 filtered_df = df[df['System'].isin(valid_systems)] print(filtered_df)
两种方法最终输出均符合期望:
| System | Type |
|---|---|
| A | 1 |
| A | 2 |
| A | 2 |
| A | 3 |
| B | 1 |
| B | 2 |
内容的提问来源于stack exchange,提问作者kalaiyarasi Uma
相关产品推荐
相关产品推荐

