擅长:python、mysql、java
<p>您也可以使用<code>set</code>、<code>len</code>和<code>flatten</code>:</p>
<pre><code>len(set(df.values.flatten()))
</code></pre>
<p>输出:</p>
<pre><code>6
</code></pre>
<hr/>
<p><strong>计时:</strong>使用具有6个唯一值的虚拟数据帧</p>
<pre><code>#dummy data
df = pd.DataFrame({'Day':np.random.choice(['aa','bbbb','c','ddddd','EeeeE','xxx'], 10**6),'Heloo':np.random.choice(['aa','bbbb','c','ddddd','EeeeE','xxx'], 10**6)})
print(df.shape)
(1000000, 2)
%timeit len(set(df.values.flatten()))
>>>89.5 ms ± 1.56 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
%timeit np.unique(df.values).shape[0]
>>>1.61 s ± 25.6 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
%timeit len(np.unique(df))
>>>1.85 s ± 229 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
</code></pre>