팬더 데이터 프레임이 있습니다. 열 중 하나의 고유 값을 오름차순으로 인쇄하고 싶습니다. 이것이 내가하는 방법입니다.
import pandas as pd
df = pd.DataFrame({'A':[1,1,3,2,6,2,8]})
a = df['A'].unique()
print a.sort()
문제는 내가 None
출력을 얻고 있다는 것 입니다.
답변:
sorted
iterable의 항목에서 새로운 정렬 목록을 반환합니다.
암호
import pandas as pd
df = pd.DataFrame({'A':[1,1,3,2,6,2,8]})
a = df['A'].unique()
print sorted(a)
산출
[1, 2, 3, 6, 8]
sort
제자리에 정렬하므로 아무것도 반환하지 않습니다.
In [54]:
df = pd.DataFrame({'A':[1,1,3,2,6,2,8]})
a = df['A'].unique()
a.sort()
a
Out[54]:
array([1, 2, 3, 6, 8], dtype=int64)
따라서에 전화 print a
한 후 다시 전화해야 sort
합니다.
예 :
In [55]:
df = pd.DataFrame({'A':[1,1,3,2,6,2,8]})
a = df['A'].unique()
a.sort()
print(a)
[1 2 3 6 8]
unique () 대신 drop_duplicates () 를 사용할 수도 있습니다.
df = pd.DataFrame({'A':[1,1,3,2,6,2,8]})
a = df['A'].drop_duplicates()
a.sort()
print a
drop_duplicates()
[0.18 팬더] 고유보다 빠르게 () 14,107,693 행 dataframe 3 배로
나는 oneliner를 선호합니다.
print(sorted(df['Column Name'].unique()))
오늘 직접 질문을 보았습니다. 귀하의 코드가 '없음'(정확히 동일한 방법을 사용하여 얻은 것)을 반환하는 이유는
a.sort()
목록을 변경하기 위해 정렬 함수를 호출하고 있습니다. 내 이해에서 이것은 수정 명령입니다. 결과를 보려면 print (a)를 사용해야합니다.
내 솔루션은 모든 것을 팬더에 보관하려고 시도했습니다.
pd.Series(df['A'].unique()).sort_values()
pandas
에 NaN
값을 넣고 혼합 유형의 배열로 작동 하기 때문에 솔루션이 마음에 듭니다 .
어쨌든 pandas가 백그라운드에서 수행하는 작업이므로 numpy의 정렬을 사용하는 것이 좋습니다.
import numpy as np
np.sort(df.A.unique())
그러나 팬더에서 모든 작업을 수행하는 것도 유효합니다.
또 다른 방법은 세트 데이터 유형을 사용하는 것입니다 .
세트의 일부 특성 : 집합은 순서가 지정되지 않고 혼합 된 데이터 유형을 포함 할 수 있으며 집합의 요소는 반복 될 수 없으며 변경 가능합니다.
질문 해결 :
df = pd.DataFrame({'A':[1,1,3,2,6,2,8]})
sorted(set(df.A))
목록 유형 의 답변 :
[1, 2, 3, 6, 8]
a.sort()
수정a
: 아무것도 반환하지 않습니다 그래서으로 대체a.sort(); print a