擅长:python、mysql、java
<p>对于较大的数组,如果只有2个值,可以检查每个值是否相等,并使用<code>|</code>(or)条件:</p>
<pre><code>%timeit df.loc[(df['col1'].values == 50) | (df['col1'].values == 60), 'gr'].unique()
%timeit df.loc[np.in1d(df['col1'], anyOfThese), 'gr'].unique()
1000 loops, best of 3: 1.07 ms per loop
1000 loops, best of 3: 1.13 ms per loop
</code></pre>
<p>在Numpy 1.11.3/Pandas 0.19.2/Python 3.6.0上测试。性能可能因设置而异。用于测试的代码:</p>
<pre><code>gr = []
for i in range(120000): gr.extend([i] * 2)
np.random.seed(0)
df = pd.DataFrame({'gr': gr,
'col1': np.random.choice(200, 240000)})
anyOfThese = np.array([50, 60])
%timeit df.loc[(df['col1'].values == 50) | (df['col1'].values == 60), 'gr'].unique()
%timeit df.loc[np.in1d(df['col1'], anyOfThese), 'gr'].unique()
</code></pre>