这是一个例子. df = pd.DataFrame({"Col":['1','2','3','10','20','19']})df上校0 11 22 33 104 205 19df.sort_values('Col')上校0 13 105 191 24 202 3 补救方法是使用 .astype 或 pd.to_numeric 将其转换为数字. df.Col = df.Col.astype(float) 或者, df.Col = pd.to_numeric(df.Col,errors ='coerce') df.sort_values('Col')上校0 11 22 33 105 194 20 b/w astype 和 pd.to_numeric 的唯一区别是,后者在处理非数字字符串时更健壮(它们被强制为NaN ),并且如果不需要强制浮点(在这种情况下就是如此),则会尝试保留整数.I'm new to pandas and working with tabular data in a programming environment. I have sorted a dataframe by a specific column but the answer that panda spits out is not exactly correct.Here is the code I have used:league_dataframe.sort_values('overall_league_position')The result that the sort method yields values in column 'overall league position' are not sorted in ascending or order which is the default for the method.What am I doing wrong? Thanks for your patience! 解决方案 For whatever reason, you seem to be working with a column of strings, and sort_values is returning you a lexsorted result.Here's an example.df = pd.DataFrame({"Col": ['1', '2', '3', '10', '20', '19']})df Col0 11 22 33 104 205 19df.sort_values('Col') Col0 13 105 191 24 202 3The remedy is to convert it to numeric, either using .astype or pd.to_numeric.df.Col = df.Col.astype(float)Or,df.Col = pd.to_numeric(df.Col, errors='coerce')df.sort_values('Col') Col0 11 22 33 105 194 20The only difference b/w astype and pd.to_numeric is that the latter is more robust at handling non-numeric strings (they're coerced to NaN), and will attempt to preserve integers if a coercion to float is not necessary (as is seen in this case). 这篇关于 pandas sort_values无法正确对数字进行排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云!
05-27 14:49
查看更多