groupby 그룹에서 최대값을 가진 행을 가져오는 pandas 메소드

不言
풀어 주다: 2023-03-24 14:34:02
원래의
4100명이 탐색했습니다.

다음은 groupby 그룹에서 최대값을 갖는 행을 가져오는 pandas 방법입니다. 이는 좋은 참조 값을 가지고 있으며 모든 사람에게 도움이 되기를 바랍니다. 함께 살펴볼까요

groupby 그룹에서 최대값을 갖는 행을 가져오는 pandas 방법

예를 들어 Mt로 그룹화된 다음 DataFrame에서 가장 큰 Count를 갖는 행을 꺼냅니다

import pandas as pd
df = pd.DataFrame({'Sp':['a','b','c','d','e','f'], 'Mt':['s1', 's1', 's2','s2','s2','s3'], 'Value':[1,2,3,4,5,6], 'Count':[3,2,5,10,10,6]})

df
로그인 후 복사



CountMtSpValue
03 s1a1
12 s1b 2
25s2c3
310s2 d4
4 10s2e 5
56s3f6

방법 1: 그룹에서 개수가 가장 많은 행

df.groupby('Mt').apply(lambda t: t[t.Count==t.Count.max()])
로그인 후 복사


10 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 방법 2: 변환을 사용하여 원본 데이터프레임의 인덱스를 얻습니다. 그런 다음 필요한 행을 필터링합니다
print df.groupby(['Mt'])['Count'].agg(max)

idx=df.groupby(['Mt'])['Count'].transform(max)
print idx
idx1 = idx == df['Count']
print idx1

df[idx1]
로그인 후 복사
Mt
s1 3
s2 10
s3 6
Name: Count, dtype: int64
0 3
1 3
2 10
3 10
4 10
5 6
dtype: int64
0 True
1 False
2 False
3 True
4 True
5 True
dtype: bool
로그인 후 복사
CountMtSp 가치


CountMtSpValue
후지산




s10 3s1a1
s23# d44

0

3

s1

a

1


310d44# e55 6s3f6
idx = df.groupby('Mt')['Count'].idxmax()
print idx
로그인 후 복사
df.iloc[idx]
Mt
s1 0
s2 3
s3 5
Name: Count, dtype: int64
로그인 후 복사
CountMtSpValue ㅋㅋㅋ
s2
문제는 3행과 4행의 값이 모두 최대값이어서 여러 행이 반환된다는 점입니다. ? 방법 3: idmax(이전 버전의 팬더는 argmax입니다)
5

6

s3f

6ㅋㅋㅋ

0

3

s1

a

1 10# 36

방법 4: 먼저 정렬한 다음 각 그룹에서 첫 번째 항목을 가져옵니다.
Sp

3
df.iloc[df.groupby(['Mt']).apply(lambda x: x['Count'].idxmax())]
로그인 후 복사
def using_apply(df):
 return (df.groupby('Mt').apply(lambda subf: subf['Value'][subf['Count'].idxmax()]))

def using_idxmax_loc(df):
 idx = df.groupby('Mt')['Count'].idxmax()
 return df.loc[idx, ['Mt', 'Value']]

print using_apply(df)

using_idxmax_loc(df)
로그인 후 복사
Mt Value
0 s1 1
s2 4 5 s3
값s36f6 그러면 또 질문이 떠오릅니다. 최대값을 갖는 행, 예를 들어 중간값을 갖는 행을 추출하고 싶지 않다면 어떻게 될까요? Python 데이터 처리 라이브러리 pandas 시작하기
ㅋㅋㅋ 2
아이디어는 여전히 비슷하지만, 구체적인 작성 방법에서 일부 수정이 필요할 수 있습니다. 예를 들어 방법 1과 2는 max 알고리즘을 수정해야 하고, 방법 3은 인덱스를 반환하는 방법을 구현해야 합니다. 어쨌든, groupby 이후에는 각 그룹이 데이터프레임입니다. 관련 권장 사항: pandas+dataframe은 행 및 열 선택과 슬라이싱 작업을 구현합니다.

위 내용은 groupby 그룹에서 최대값을 가진 행을 가져오는 pandas 메소드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿