Pandas DataFrame에 있는 특정 열의 각 고유 값 내에서 상위 2개 레코드를 검색하는 작업을 고려해 보세요. 예를 들어 다음 DataFrame을 고려해보세요.
df = pd.DataFrame({'id':[1,1,1,2,2,2,2,3,4], 'value':[1,2,3,1,2,3,4,1,1]})
전통적으로는 원하는 열을 기준으로 그룹화한 후 각 그룹 내의 레코드에 번호를 매겨 이 문제에 접근할 수 있습니다.
dfN = df.groupby('id').apply(lambda x:x['value'].reset_index()).reset_index()
그러나 보다 효율적이고 우아한 접근 방식은 pandas의 헤드 기능을 활용하는 것입니다.
df.groupby('id').head(2)
이는 각각의 상위 2개 레코드를 직접 반환합니다. 그룹에 추가 열 번호를 매길 필요가 없습니다.
id value id 1 0 1 1 1 1 2 2 3 2 1 4 2 2 3 7 3 1 4 8 4 1
MultiIndex를 제거하고 결과를 평면화하려면:
df.groupby('id').head(2).reset_index(drop=True)
id value 0 1 1 1 1 2 2 2 1 3 2 2 4 3 1 5 4 1
위 내용은 Pandas DataFrame의 그룹 내 상위 N개 레코드를 효율적으로 검색하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!