数据列上的Pandas数据帧排序值会产生意外结果

时间:2017-12-20 21:00:02

标签: python pandas sorting dataframe

我是Pandas的新手,在编程环境中使用表格数据。我已按特定列对数据框进行了排序,但熊猫吐出的答案并不完全正确。

以下是我使用的代码:

league_dataframe.sort_values('overall_league_position')

排序方法在列'整体联赛位置'中产生值的结果不按升序或顺序排序,这是该方法的默认值。

enter image description here

我做错了什么?谢谢你的耐心等待!

1 个答案:

答案 0 :(得分:2)

无论出于何种原因,您似乎正在使用一列字符串,而sort_values会返回一个lexsorted结果。

这是一个例子。

df = pd.DataFrame({"Col": ['1', '2', '3', '10', '20', '19']})
df

  Col
0   1
1   2
2   3
3  10
4  20
5  19

df.sort_values('Col)

  Col
0   1
3  10
5  19
1   2
4  20
2   3

解决方法是使用.astypepd.to_numeric将其转换为数字。

df.Col = df.Col.astype(float)

或者,

df.Col = pd.to_numeric(df.Col, errors='coerce')
df.sort_values('Col')

   Col
0    1
1    2
2    3
3   10
5   19
4   20

b / w astypepd.to_numeric的唯一区别在于后者在处理非数字字符串时更加健壮(它们被强制为NaN),并将尝试如果不需要强制浮动,则保留整数(如本例所示)。