首页 > 解决方案 > 根据组过滤唯一值

问题描述

我有下表:

id  L1  L2
1   A   B
1   A   C
1   A   D
1   B   B
1   B   C
1   B   D
2   D   A
2   D   F

我想过滤掉 中的任何L2L1,但仅限于同一id组中。所以对于id=1,我们过滤掉L2=B,但保留L2=D。对于id=2,我们保持L2=A

输出应该是这样的:

id  L1  L2
1   A   C
1   A   D
1   B   C
1   B   D
2   D   A
2   D   F

标签: pythonpython-3.xpandasdataframe

解决方案


我假设您正在使用pandas

df.groupby('id').apply(lambda x: x[~x.L2.isin(x.L1)]).reset_index(drop=True)

   id L1 L2
0   1  A  C
1   1  A  D
2   1  B  C
3   1  B  D
4   2  D  A
5   2  D  F

推荐阅读