排序列缺少值

2024-03-28 18:24:36 发布

您现在位置:Python中文网/ 问答频道 /正文

不确定这个标题是否正确。但我需要从数据帧中取出一列,并显示前五个结果。该列是整数和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. 过滤掉n/a valyes
  2. 返回前五个值。你知道吗

但是,它没有返回任何超过800?我是不是漏掉了什么很明显的东西?你知道吗


Tags: csv数据函数标题dfsearchcounttable
2条回答

你也可以这样做:

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

检查数据帧的dtypes,现在是object。所以首先确保col1的数据类型是数字。 在^{}使用na_values,函数将按预期工作:

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

相关问题 更多 >