Skip to main content
 首页 » 编程设计

python之pandas 排序列遗漏值

2025年05月04日11zhujiabin

不确定正确的标题。但我需要从数据框中取出一列,并显示前五个结果。该列是整数和 n/a 结果的混合。作为示例,我创建了一个基本数据框:

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 

然后运行:

import pandas as pd 
df = pd.read_csv('test_data.csv') 

然后我创建了一个基本函数,这样我就可以在不同的列上使用它,如此构造:

def max_search(indicator): 
    displaced_count = df[df[indicator] != 'n/a'] 
    table = displaced_count.sort_values([indicator], ascending=[False]) 
    return table.head(5) 

但是当我运行的时候

max_search('col1') 

它返回:

    regiona col1 
7         c  800 
6         b  600 
5         b  560 
4         b  400 
3         b  208 

所以它错过了任何大于 800 的东西。我认为该函数应该执行的步骤是:

  1. 过滤掉不适用的值
  2. 返回前五个值。

但是,它不返回任何超过 800 的东西?我是否漏掉了一些非常明显的东西?

请您参考如下方法:

检查数据框的dtypes,现在是object。所以首先要确保 col1 的数据类型是数字。 在 pd.read_csv() 使用 na_values并且您的函数将按预期工作:

df = pd.read_csv('test_data.csv', na_values='n/a') 
# df.dtypes