Python中"%in%"操作符的等价物

36 投票
4 回答
24522 浏览
提问于 2025-04-18 16:34

这个问题是在问,Python中有没有类似于“in”这个操作符的用法?我想通过筛选一个pandas数据库,让只有那些某一列的值在我的列表中的行保留下来。

我试过用any()这个函数,但遇到了很大的困难。

4 个回答

-2

正如其他人所说,Python的in运算符使用起来很方便。

myList = ["a00", "b000", "c0"]

"a00" in myList
# True

"a" in myList
# False
2

如果你想只用 numpy 而不使用 pandas(就像我之前的一个使用场景),你可以这样做:

import numpy as np

x = np.array([1, 2, 3, 10])
y = np.array([10, 11, 2])
np.isin(y, x)

这和下面的代码是一样的:

c(10, 11, 2) %in% c(1, 2, 3, 10)

请注意,最后一行代码只适用于 numpy >= 1.13.0 版本,对于旧版本,你需要使用 np.in1d

13

顺便说一下:如果不想用pandas,这里有一个纯Python的答案,使用了for循环列表推导式

x = [2, 3, 5] 
y = [1, 2, 3]

# for loop
for i in x: [].append(i in y)

Out: [True, True, False]


# list comprehension
[i in y for i in x]

Out: [True, True, False]
52

Pandas和R的对比文档可以在这里找到。

s <- 0:4
s %in% c(2,4)

isin这个方法和R语言中的%in%操作符很像:

In [13]: s = pd.Series(np.arange(5),dtype=np.float32)

In [14]: s.isin([2, 4])
Out[14]: 
0    False
1    False
2     True
3    False
4     True
dtype: bool

撰写回答