Pandas 그룹에서 최대 개수의 행 가져오기
문제:
행을 식별하는 방법 여러 그룹으로 그룹화할 때 pandas DataFrame의 'count' 열에 대해 가장 높은 값 열?
해결책:
1단계: 각 그룹의 최대 개수 찾기
각 그룹의 최대 개수를 결정하려면 그룹화하려면 groupby() 및 max() 함수를 사용하세요.
max_counts = df.groupby(['Sp', 'Mt'])['count'].max()
이렇게 하면 각 그룹의 최대 개수가 포함된 시리즈.
2단계: 최대 개수가 있는 행 식별
원본 DataFrame에서 최대 개수가 있는 행의 인덱스를 가져오려면 , 변환() 메소드를 사용하십시오:
idx = df.groupby(['Sp', 'Mt'])['count'].transform(max) == df['count']
이렇게 하면 True가 최대값을 갖는 행을 나타내는 부울 시리즈가 생성됩니다. count.
3단계: 최대 개수를 기준으로 행 필터링
마지막으로 부울 인덱싱을 사용하여 DataFrame을 필터링하여 최대 개수가 있는 행만 선택합니다.
result = df[idx]
이렇게 하면 각 DataFrame 내 'count' 열의 값이 가장 높은 행만 포함된 새 DataFrame이 반환됩니다. 그룹.
예:
예 1:
df = pd.DataFrame({ 'Sp': ['MM1', 'MM1', 'MM1', 'MM2', 'MM2', 'MM2', 'MM4', 'MM4', 'MM4'], 'Mt': ['S1', 'S1', 'S3', 'S3', 'S4', 'S4', 'S2', 'S2', 'S2'], 'Value': ['a', 'n', 'cb', 'mk', 'bg', 'dgd', 'rd', 'cb', 'uyi'], 'count': [3, 2, 5, 8, 10, 1, 2, 2, 7] })
출력:
Sp Mt Value count 0 MM1 S1 a 3 2 MM1 S3 cb 5 3 MM2 S3 mk 8 4 MM2 S4 bg 10 8 MM4 S2 uyi 7
예 2:
df = pd.DataFrame({ 'Sp': ['MM2', 'MM2', 'MM4', 'MM4', 'MM4'], 'Mt': ['S4', 'S4', 'S2', 'S2', 'S2'], 'Value': ['bg', 'dgd', 'rd', 'cb', 'uyi'], 'count': [10, 1, 2, 8, 8] })
출력:
Sp Mt Value count 4 MM2 S4 bg 10 7 MM4 S2 cb 8 8 MM4 S2 uyi 8
참고: 그룹 내의 여러 행에 최대 수가 있는 경우, 해당 행이 모두 반환됩니다.
위 내용은 Pandas GroupBy 작업에서 최대 개수의 행을 찾는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!