gpt4 book ai didi

python - 根据条件删除列表的重复项

转载 作者:行者123 更新时间:2023-12-05 03:28:57 25 4
gpt4 key购买 nike

比如说,我有以下两个列表:

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]

我尝试使用 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 的解决方案会很好,但不是必需的,使用列表理解的解决方案也可以。

最佳答案

你可以使用:

# 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

关于python - 根据条件删除列表的重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71127395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com