按组分组并仅保留满足特定条件的单元格

0 投票
2 回答
41 浏览
提问于 2025-04-13 02:04

我有以下的数据集:

功能位置 主要工作中心
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'})

撰写回答