擅长:python、mysql、java
<p>这并不像它可能(应该)那么简单。</p>
<p>正如您可能知道的,统计术语中最常用的值是“mode”,Numpy没有内置的函数,但是scipy有。按如下方式导入:</p>
<pre><code>from scipy.stats.mstats import mode
</code></pre>
<p>它不仅仅返回最常见的值<a href="http://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.mstats.mode.html" rel="nofollow noreferrer">as you can read about in the docs</a>,因此定义一个函数很方便,它使用<code>mode</code>来获得最常见的值。</p>
<pre><code>f = lambda x: mode(x, axis=None)[0]
</code></pre>
<p>现在,不要使用<code>value_counts()</code>,而是使用<code>apply(f)</code>。下面是一个例子:</p>
<pre><code>In [20]: DataFrame([1,1,2,2,2,3], index=[1,1,1,2,2,2]).groupby(level=0).apply(f)
Out[20]:
1 1.0
2 2.0
dtype: object
</code></pre>
<p><strong>更新:</strong>Scipy的<code>mode</code>不适用于字符串。对于字符串数据,需要定义一个更通用的模式函数。<a href="https://stackoverflow.com/questions/12297016/how-to-find-most-frequent-values-in-numpy-ndarray">This answer</a>应该能做到。</p>