Pandas 相当于 R 运算符“%in%”

问题描述 投票:0回答:4

与此 in 运算符等效的 python 是什么? 我试图通过仅在行中的列具有在我的列表中找到的值时保留行来过滤 pandas 数据库。

我尝试使用any(),但遇到了巨大的困难。

python r pandas
4个回答
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

13
投票

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]

2
投票

如果您只想使用

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


-2
投票

正如其他人指出的,基础 Python 的

in
运算符效果很好。

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

"a00" in myList
# True

"a" in myList
# False
© www.soinside.com 2019 - 2024. All rights reserved.