문제:
Pandas DataFrame에서 다음과 같은 모든 행을 검색합니다. "Sp" 및 "Mt"로 그룹화된 "count" 열의 최대값 columns.
예:
예 1:
입력 데이터 프레임:
Sp | Mt | Value | count |
---|---|---|---|
MM1 | S1 | a | 3 |
MM1 | S1 | n | 2 |
MM1 | S3 | cb | 5 |
MM2 | S3 | mk | 8 |
MM2 | S4 | bg | 10 |
MM2 | S4 | dgd | 1 |
MM4 | S2 | rd | 2 |
MM4 | S2 | cb | 2 |
MM4 | S2 | uyi | 7 |
예상됨 출력:
Sp | Mt | Value | count |
---|---|---|---|
MM1 | S1 | a | 3 |
MM1 | S3 | cb | 5 |
MM2 | S3 | mk | 8 |
MM2 | S4 | bg | 10 |
MM4 | S2 | uyi | 7 |
예 2:
입력 데이터 프레임:
Sp | Mt | Value | count |
---|---|---|---|
MM2 | S4 | bg | 10 |
MM2 | S4 | dgd | 1 |
MM4 | S2 | rd | 2 |
MM4 | S2 | cb | 8 |
MM4 | S2 | uyi | 8 |
예상됨 출력:
Sp | Mt | Value | count |
---|---|---|---|
MM2 | S4 | bg | 10 |
MM4 | S2 | cb | 8 |
MM4 | S2 | uyi | 8 |
해결책:
import pandas as pd df.groupby(['Sp', 'Mt'])['count'].max()
이렇게 하면 "Sp"와 "Sp"의 각 고유 조합에 대한 최대 수가 포함된 시리즈가 반환됩니다. "Mt".
idx = df.groupby(['Sp', 'Mt'])['count'].transform(max) == df['count']
True는 최대 개수가 포함된 행을 나타내는 부울 마스크를 생성합니다. 그룹을 선택하세요.
df[idx]
이렇게 하면 idx 마스크가 True인 행만 포함하도록 DataFrame을 필터링하여 원하는 결과를 얻을 수 있습니다.
참고: 동일한 그룹에 동일한 최대 수가 있는 여러 행이 발생하면 반환됩니다.
위 내용은 그룹화된 Pandas DataFrame에서 최대 개수의 행을 얻는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!