按组分组并仅保留满足特定条件的单元格
我有以下的数据集:
功能位置 | 主要工作中心 |
---|---|
1110-40-KB01A | POMMEC |
1110-40-KB01A | POMELE |
1110-42-PSV 154H | POMMEC |
1110-42-PSV 154H | POMMEC |
1110-51-PA03B | POMELE |
1110-51-PA03B | POMMEC |
1110-53-TB01B | POMMEC |
1110-53-TB01B | POMMEC |
1110-10-MC01 | POMELE |
1110-20-HA01A | POMMEC |
我想根据第一列(功能位置)进行分组,但只保留那些在第二列(主要工作中心)中包含两个不同值的组,最终结果应该是:
功能位置 | 主要工作中心 |
---|---|
1110-40-KB01A | POMMEC |
1110-40-KB01A | POMELE |
1110-51-PA03B | POMELE |
1110-51-PA03B | POMMEC |
我尝试了以下代码:
df2=df.groupby('Functional Loc.').apply(lambda x: x['Main WorkCtr']==('POMELE' and 'POMMEC'))
但是这给了我布尔值,似乎不太正确。
2 个回答
2
其实你已经快到答案了,应该用的是 .filter
而不是 .apply
:
df.groupby('Functional Loc.').filter(lambda x: 'POMMEC' in x['Main WorkCtr'].values and 'POMELE' in x['Main WorkCtr'].values)
3
你可以试试下面的方法:
df.groupby('Functional Loc.').filter(lambda x: set(x['Main WorkCtr']) == {'POMMEC', 'POMELE'})