2017-12-20 17 views
0

프로그래밍 환경에서 팬더를 사용하고 테이블 형식 데이터로 작업하는 것이 처음입니다. 특정 열에 의해 데이터 프레임을 정렬했지만 판다가 내뱉는 대답은 정확하지 않습니다. 정렬 방법은 열의 전체 리그 위치 '의 값을 산출 오름차순 또는 방법의 기본 인 순서로 정렬되지숫자 열의 팬더 데이터 프레임 정렬 값으로 인해 예상치 못한 결과가 발생합니다.

league_dataframe.sort_values('overall_league_position') 

결과 : 여기

내가 사용한 코드이다. 내가 잘못 뭐하는 거지

enter image description here

? 양해 해 주셔서 감사합니다.

+1

이미지가 아닌 질문에 직접 코드를 붙여 넣으십시오. {} 버튼을 사용하여 올바르게 포맷 할 수 있습니다. 출력용으로도이 작업을 수행해야합니다. – Craig

+1

그것은 문자열의 열, 그 이유입니다. –

답변

1

어떤 이유로 든 문자열 열로 작업하는 것 같고 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 

구제 중 하나 .astype 또는 pd.to_numeric를 사용하여 숫자로 변환하는 것입니다.

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 

/astype와트 및 pd.to_numeric B 유일한 차이점은 후자는 (그들이 NaN로 강제하는 숫자가 아닌 문자열을 처리 더 견고하다는 것이다

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

또는), float에 강요가 필요하지 않은 경우 (이 경우에서 볼 수 있듯이) 정수를 보존하려고 시도합니다.

+0

고맙습니다. Upvoted 대답하지만 내가 초보자이기 때문에 그것은 공개적으로 표시된 게시물 점수를 변경하지 않습니다. – Newkid

+0

@ 뉴 키드 대답이 도움이되었다는 이야기를 듣는 것이 좋습니다. 그것이 도움이되었다는 것을 나타 내기 위해 [답변 수락] (https://stackoverflow.com/help/someone-answers)을 할 수 있습니다. –