相关疑难解决方法(0)

如何确定Pandas列是否包含特定值

我试图确定Pandas列中是否有一个具有特定值的条目.我试着这样做if x in df['id'].我认为这是有效的,除非我给它一个值,我知道它不在列中,43 in df['id']它仍然返回True.当我对仅包含与缺少的id匹配的条目的数据框进行子集化时df[df['id'] == 43],显然其中没有条目.如何确定Pandas数据框中的列是否包含特定值以及为什么我的当前方法不起作用?(仅供参考,当我在这个问题的答案中使用实现时,我遇到了同样的问题).

python pandas

120
推荐指数
6
解决办法
21万
查看次数

__contains__如何为ndarrays工作?

>>> x = numpy.array([[1, 2],
...                  [3, 4],
...                  [5, 6]])
>>> [1, 7] in x
True
>>> [1, 2] in x
True
>>> [1, 6] in x
True
>>> [2, 6] in x
True
>>> [3, 6] in x
True
>>> [2, 3] in x
False
>>> [2, 1] in x
False
>>> [1, 2, 3] in x
False
>>> [1, 3, 5] in x
False
Run Code Online (Sandbox Code Playgroud)

我不知道__contains__ndarrays是如何工作的.我找的时候找不到相关的文档.它是如何工作的?它是否记录在任何地方?

python numpy

16
推荐指数
2
解决办法
699
查看次数

使用 numba 更快的 numpy 替代字符串

np.isin我正在尝试实现更快的in版本numba,这是我到目前为止所拥有的:

import numpy as np
import numba as nb

@nb.njit(parallel=True)
def isin(a, b):
    out=np.empty(a.shape[0], dtype=nb.boolean)
    b = set(b)
    for i in nb.prange(a.shape[0]):
        if a[i] in b:
            out[i]=True
        else:
            out[i]=False
    return out
Run Code Online (Sandbox Code Playgroud)

对于数字来说它是有效的,如下例所示:

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

isin(a,b)
>>> array([False,  True, False,  True])
Run Code Online (Sandbox Code Playgroud)

而且它比以下更快np.isin

a = np.random.rand(20000)
b = np.random.rand(5000)

%time isin(a,b)
CPU times: user 3.96 ms, sys: 0 ns, total: 3.96 ms
Wall time: 1.05 ms

%time np.isin(a,b)
CPU times: user 11 ms, …
Run Code Online (Sandbox Code Playgroud)

python string performance numpy numba

5
推荐指数
1
解决办法
1443
查看次数

标签 统计

python ×3

numpy ×2

numba ×1

pandas ×1

performance ×1

string ×1