Python 熊猫排序_值不能正确排序数字
我不熟悉pandas,在编程环境中处理表格数据。我已经按特定列对数据帧进行了排序,但panda给出的答案并不完全正确 以下是我使用的代码:Python 熊猫排序_值不能正确排序数字,python,pandas,sorting,dataframe,Python,Pandas,Sorting,Dataframe,我不熟悉pandas,在编程环境中处理表格数据。我已经按特定列对数据帧进行了排序,但panda给出的答案并不完全正确 以下是我使用的代码: league_dataframe.sort_values('overall_league_position') 排序方法在“总体联盟位置”列中生成值的结果未按升序或顺序排序,这是该方法的默认顺序 我做错了什么?谢谢你的耐心 无论出于何种原因,您似乎正在处理一列字符串,而sort\u values将返回一个lexsorted结果 这里有一个例子 df =
league_dataframe.sort_values('overall_league_position')
排序方法在“总体联盟位置”列中生成值的结果未按升序或顺序排序,这是该方法的默认顺序
我做错了什么?谢谢你的耐心 无论出于何种原因,您似乎正在处理一列字符串,而
sort\u 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
解决方法是使用.astype
或pd.to\u numeric
将其转换为数字
df.Col = df.Col.astype(float)
或者
b/w
astype
和pd.到_numeric
的唯一区别在于后者在处理非数字字符串(它们被强制为NaN
)时更为健壮,并且如果不需要强制浮点(如本例所示),将尝试保留整数。请将代码直接粘贴到问题中,不是图像。您可以使用{}按钮将其正确格式化。对于输出也应该这样做。这是一列字符串,这就是为什么。如果我需要实际处理字符串值并将它们保持为字符串,该怎么办?例如字符串“1%”、“2%”、“10%”、“25%”、。。。?有没有一种方法可以通过自定义比较器对值进行排序而不必来回转换数据?@AdamBajger您可以在线查找“熊猫自然排序列”。@cs95我刚刚找到了一个全面的答案,感谢natsorted的帮助。@AdamBajger哦,太棒了,我想我认识拥有该答案的人……救了我一天,伙计!.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