如何筛选DataFrame中同一C1列值对应不同C2列值的所有行
完全可以实现,核心思路是按C1列分组后,统计每个分组内C2列的唯一值数量,过滤出唯一值数量大于1的分组对应的所有行即可。
完整实现代码
import pandas as pd # 构造示例DataFrame df = pd.DataFrame({ 'C1': ['ciao', 'anna', 'anna'], 'C2': ['type1', 'type1', 'type2'] }) # 方法1:使用transform一行完成筛选(效率更高,适合大数据量场景) result = df[df.groupby('C1')['C2'].transform('nunique') > 1] # 方法2:先筛选符合条件的C1取值,再过滤原表(逻辑更直观) valid_c1 = df.groupby('C1').filter(lambda x: x['C2'].nunique() > 1)['C1'].unique() result = df[df['C1'].isin(valid_c1)]
输出结果
两种方法得到的result均和你期望的输出一致:
| C1 | C2 |
|---|---|
| anna | type1 |
| anna | type2 |
内容的提问来源于stack exchange,提问作者giupardeb
相关产品推荐
相关产品推荐

