[英]Remove duplicates of list based on condition
说,我有以下两个列表:
list1 = ['A', 'A', 'B', 'B', 'C', 'D']
list2 = ['x', 'y', 'y', 'x', 'x', 'y']
我想根据list2中重复项的对应元素为'y'的条件消除list1的所有重复项及其在list2中的对应元素。
预期结果:
list1 = ['A', 'B', 'C', 'D']
list2 = ['y', 'y', 'x', 'y']
最后的最终目标是根据返回的索引继续做事,例如上面的例子:
index = [1, 2, 4, 5]
我尝试通过使用熊猫来解决这个问题:
df = pd.DataFrame(zip(list1, list2), columns=["l1", "l2"])
df = df[(~(df.duplicated(['l1']))) | (df.duplicated(['l1']) & df.l2.eq('y'))]
但这并没有给我正确的结果。 请注意,我不能引用第一个或最后一个元素的删除,因为“x”和“y”不需要以相同的顺序出现。
带有熊猫的解决方案很好,但不是必需的,带有列表理解的解决方案也可以。
你可以使用:
# keep if: l1 is not duplicated OR l2 == "y"
df[~df['l1'].duplicated(keep=False) | df['l2'].eq('y')]
输出:
l1 l2
1 A y
2 B y
4 C x
5 D y
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.