繁体   English   中英

检查元素列表是否在 DataFrame 列中

[英]Check if elements list are in column DataFrame

目标:我有 200 个元素(url)的列表,我想检查每个元素是否在Dataframe的特定列中。 如果是,我想从列表中删除该元素。

问题:我正在尝试类似的解决方案,将那些不存在的列表添加到新列表中,但它会添加所有这些。

pruned = []
for element in list1:
    if element not in transfer_history['Link']:
        pruned.append(element)

我也尝试过我要求的解决方案,但没有成功。 我认为这是一件简单的事情,但我找不到关键。

for element in list1:
    if element in transfer_history['Link']:
        list1.remove(element)

当您与 pandas 系列一起使用in您正在搜索索引,而不是值 要解决此问题,请使用transfer_history['Link'].tolist()将列转换为列表,或者更好地将其转换为集合。

links = set(transfer_history["Link"])

过滤列表的好方法是这样的:

pruned = [element for element in list1 if element not in links]

迭代时不要从列表中删除元素,这可能会产生意想不到的结果。

请记住,您的transfer_history['Link']语法是整个列本身。 您需要使用另一个数组transfer_history['Link'][x]来调用列中的每个项目。 使用 for 循环遍历列中的每个项目。

或者更简单的方法是检查该项目是否在一个由整个列组成的列表中,并带有一个衬里:

pruned = []
for element in list1:
    if element not in [link for link in transfer_history['Link']]:
        pruned.append(element)

如果 url 的顺序无关紧要,可以使用集合来简化很多:

list1 = list(set(list1) - set(transfer_history['Link']))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM