标签: isin

使用 pd.isin() 检查一列中的值是否在另一列的列表中

我有一个如下所示的数据框

df = pd.DataFrame({
    'x' : range(0,5),
    'y' : [[0,2],[3,4],[2,3],[3,4],[7,9]]
})
Run Code Online (Sandbox Code Playgroud)

我想测试 x 的每一行,如果该值位于 y 列指定的列表中

df[df.x.isin(df.y)]
Run Code Online (Sandbox Code Playgroud)

所以我最终会得到:

在此输入图像描述

不知道为什么 isin() 在这种情况下不起作用

python pandas isin

4
推荐指数
2
解决办法
3991
查看次数

对于大型数组,是否有比 np.isin 更快的方法?

对于大数组(n>1e8),有没有比np.isin检查是否有相同元素更快的方法?

我尝试过几种方法,例如 pandas isin, cython 但所有这些都比np.isin

示例:(测试一维数组的每个元素是否也存在于第二个数组中)

num = int(1e8)
a = np.random.rand(int(num))
b = np.random.rand(int(num))

ref=time.time()
ainb = np.isin(a,b)
print(a[ainb])
print(time.time()-ref,'sec')

Run Code Online (Sandbox Code Playgroud)
>>> [0.23591019 0.46102523]
>>> 65.45570135116577 sec
Run Code Online (Sandbox Code Playgroud)

python optimization numpy pandas isin

2
推荐指数
1
解决办法
2009
查看次数

Numpy 两个二维数组的逐元素 isin

我有两个数组:

a = np.array([[1, 2], [3, 4], [5, 6]])

b = np.array([[1, 1, 1, 3, 3],
              [1, 2, 4, 5, 9],
              [1, 2, 3, 4, 5]])
Run Code Online (Sandbox Code Playgroud)

预期的输出将与数组“a”的形状匹配,并且将是:

array([True, False], [False, True], [True, False])
Run Code Online (Sandbox Code Playgroud)

数组 a 和 b 的第一维大小始终匹配(在本例中为 3)。

我希望计算的是每个数组的每个索引(0 到 2,因为这里有 3 个维度)是数组“a”中的每个数字是否存在于数组“b”相应的第二个维度中。

我可以使用以下代码循环解决这个问题,但我想对其进行矢量化以获得速度提升,但在这里坐了几个小时,我无法弄清楚:

output = np.full(a.shape, False)
assert len(a) == len(b)
for i in range(len(a)):
    output[i] = np.isin(a[i], b[i])
Run Code Online (Sandbox Code Playgroud)

感谢您的指导!任何事情都会非常感激:)

python arrays numpy isin

2
推荐指数
1
解决办法
677
查看次数

Pandas:在两个数据帧中查找匹配的行(不使用“合并”)

假设我有这两个数据框,其列数相同,但行数可能不同:

tmp = np.arange(0,12).reshape((4,3))
df = pd.DataFrame(data=tmp) 

tmp2 = {'a':[3,100,101], 'b':[4,4,100], 'c':[5,100,3]}
df2 = pd.DataFrame(data=tmp2)

print(df)
   0   1   2
0  0   1   2
1  3   4   5
2  6   7   8
3  9  10  11

print(df2)
     a    b    c
0    3    4    5
1  100    4  100
2  101  100    3
Run Code Online (Sandbox Code Playgroud)

我想验证 的行是否df2与 的任何行匹配 df,也就是说,我想获得一系列(或数组)布尔值来给出以下结果:

0     True
1    False
2    False
dtype: bool
Run Code Online (Sandbox Code Playgroud)

我认为类似的isin方法应该有效,但我得到了这个结果,这导致了一个数据框并且是错误的:

print(df2.isin(df))
       a      b      c
0  False  False  False
1  False  False …
Run Code Online (Sandbox Code Playgroud)

python matching dataframe pandas isin

2
推荐指数
1
解决办法
2833
查看次数

标签 统计

isin ×4

python ×4

pandas ×3

numpy ×2

arrays ×1

dataframe ×1

matching ×1

optimization ×1