假设我有下面这两个列表:
list1 = ['A', 'A', 'B', 'B', 'C', 'D']
list2 = ['x', 'y', 'y', 'x', 'x', 'y']
我想基于以下条件在list1中消除所有重复项及其在list2中对应的元素,条件是在list2中与重复项对应的元素为"y"。
期望的结果:
list1 = ['A', 'B', 'C', 'D']
list2 = ['y', 'y', 'x', 'y']
在最终目标中,根据返回的索引继续执行相关操作。对于上面的例子,具体操作如下:
index = [1, 2, 4, 5]
我尝试使用 Pandas 解决这个问题:
df = pd.DataFrame(zip(list1, list2), columns=["l1", "l2"])
df = df[(~(df.duplicated(['l1']))) | (df.duplicated(['l1']) & df.l2.eq('y'))]
但这并没有给我正确的结果。请注意,我无法引用第一个或最后一个元素来删除,因为 'x' 和 'y' 不需要以相同的顺序出现。
使用pandas的解决方案可以,但不是必需的,使用列表推导式的解决方案也可以。