与此 in 运算符等效的 python 是什么? 我试图通过仅在行中的列具有在我的列表中找到的值时保留行来过滤 pandas 数据库。
我尝试使用any(),但遇到了巨大的困难。
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
FWIW:无需调用 pandas,这是在纯 python 中使用
for loop
和 list compression
的答案
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]
如果您只想使用
numpy
而不使用panads
(就像我的用例)那么您可以:
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
。
正如其他人指出的,基础 Python 的
in
运算符效果很好。
myList = ["a00", "b000", "c0"]
"a00" in myList
# True
"a" in myList
# False