gpt4 book ai didi

Python - 与 __contains__ 相反

转载 作者:行者123 更新时间:2023-11-28 21:09:20 34 4
gpt4 key购买 nike

一般性问题

我想知道是否存在与 __contains__ 相反的 Python(即类似 __notcontains__ 的东西)。

我的例子

我需要它用于以下代码:

df_1 = df[(df.id1 != id1_array) | (df.id2.apply(id2_array.__contains__)]
df_2 = df[(df.id1 == id1_array) & (df.id2.apply(id2_array.__notcontains__)]

换句话说,在 df1 中,我只想要 id1 不在 id1_array1 id2 id2_array 中,而对于 df2 我只想观察 id1 id1_array id2 不在 id2_array.

谁能帮帮我?提前致谢!

最佳答案

要回答如何在纯 pandas 中执行此操作,您可以使用 isin并使用否定运算符 ~ 反转 bool 系列:

df_1 = df[(df.id1 != id1_array) | (df.id2.isin(id2_array)]
df_2 = df[(df.id1 == id1_array) & (~df.id2.isin(id2_array)]

这比在更大的数据集上使用 apply 更快,因为 isin 是矢量化的

当使用比较运算符,例如 ==!= 这将返回 True/False,其中数组值相同/不同在同一个位置。如果您只是测试成员资格,即数组中是否存在值列表​​,然后使用 isin 这也将返回一个 bool 系列,其中找到匹配项,使用 反转数组~

同样作为一般规则,避免使用 apply 除非不可能,原因是 apply 只是执行 for 的语法糖> 在 df 上循环,这不是矢量化的。如果您足够努力,通常有一些方法可以在不使用 apply 的情况下获得相同的结果。

关于Python - 与 __contains__ 相反,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38483274/

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