首页 > 解决方案 > sort_value working on Name column but not Number column in dataframe

问题描述

When try to sort my dataframe by the column "Number" i get the error code

1708 # Check for duplicates

KeyError: 'Number'

the dataframe looks something like this

Number Name City Sex

3 Jay A M

1 Marry A F

5 John B M

Number is int64 and the rest are objects

df.sort_values(by=['Number']) --> error

df.sort_values(by=['Name']) --> works

df.sort_values(by=['City']) --> error

df.sort_values(by=['Sex']) --> works

What i am looking for is something like this

Number Name City Sex

  1 Marry A F

  3 Jay A M

  5 John B M

标签: pythonpandascolumnsorting

解决方案


我尝试制作一个像你这样的 DataFrame 并对其进行排序,它可以按Number列排序:

df=pd.DataFrame({'Number':[3,1,5],
                'Name':['Jay','Marry','John'],
                'City':['A','A','B'],
                'Sex':['M','F','M']})
print(df)
print(df.Number.dtype)
df=df.sort_values(by=['Number'])
print(df)

输出:

   Number   Name City Sex
0       3    Jay    A   M
1       1  Marry    A   F
2       5   John    B   M

int64

   Number   Name City Sex
1       1  Marry    A   F
0       3    Jay    A   M
2       5   John    B   M

也许你的列中有一个空格,在排序之前试试这个:

df.columns=df.columns.str.strip()

推荐阅读