<p>不确定这个标题是否正确。但我需要从数据帧中取出一列,并显示前五个结果。该列是整数和n/a结果的混合。例如,我创建了一个基本数据帧:</p>
<pre><code>regiona col1
a n/a
a 1
a 200
b 208
b 400
b 560
b 600
c 800
c 1120
c 1200
c 1680
d n/a
d n/a
</code></pre>
<p>所以,快跑:</p>
<pre><code>import pandas as pd
df = pd.read_csv('test_data.csv')
</code></pre>
<p>然后我创建了一个基本函数,这样我就可以在不同的列上使用它,这样构造:</p>
<pre><code>def max_search(indicator):
displaced_count = df[df[indicator] != 'n/a']
table = displaced_count.sort_values([indicator], ascending=[False])
return table.head(5)
</code></pre>
<p>但当我跑的时候</p>
<pre><code>max_search('col1')
</code></pre>
<p>它返回:</p>
<pre><code> regiona col1
7 c 800
6 b 600
5 b 560
4 b 400
3 b 208
</code></pre>
<p>所以它忽略了大于800的任何东西。我认为函数应该执行的步骤是:</p>
<ol>
<li>过滤掉n/a valyes</li>
<li>返回前五个值。你知道吗</li>
</ol>
<p>但是,它没有返回任何超过800?我是不是漏掉了什么很明显的东西?你知道吗</p>
<p>你也可以这样做:</p>
<pre><code>df['col1'] = pd.to_numeric(df['col1'], errors='coerce')
df.dropna().sort_values(['col1'], ascending=False).head(5)
regiona col1
10 c 1680.0
9 c 1200.0
8 c 1120.0
7 c 800.0
6 b 600.0
</code></pre>