Pandas如何筛选col1取值与col2所有取值都存在完整配对的行
实现思路
- 先统计
col2列所有不重复取值的总个数 - 对
col1分组后统计每个分组下col2的不重复取值个数 - 保留分组内
col2不重复个数等于总个数的col1对应的所有行
代码实现
首先导入pandas并构造示例数据:
import pandas as pd df = pd.DataFrame({'col1':['a','a','b','b','c'],'col2':['x','y','x','y','x']})
方法1:分步实现,可读性更高
# 统计col2唯一值总数量 col2_nunique = df['col2'].nunique() # 筛选出满足配对要求的col1取值 qualified_col1 = df.groupby('col1')['col2'].nunique().loc[lambda x: x == col2_nunique].index # 过滤行得到结果 res = df[df['col1'].isin(qualified_col1)]
方法2:用transform一行实现
res = df[df.groupby('col1')['col2'].transform('nunique').eq(df['col2'].nunique())]
输出结果
col1 col2 0 a x 1 a y 2 b x 3 b y
内容的提问来源于stack exchange,提问作者HappyPy
相关产品推荐
相关产品推荐

