>  기사  >  백엔드 개발  >  groupby 그룹에서 최대값을 가진 행을 가져오는 pandas 메소드

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

不言
不言원래의
2018-04-20 13:38:464036검색

다음은 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



Count Mt Sp Value
0 3 s1 a 1
1 2 s1 b 2
2 5 s2 c 3
3 10 s2 d 4
4 10 s2 e 5
5 6 s3 f 6

방법 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 가치


Count Mt Sp Value
후지산




s1 0 3 s1 a 1
s2 3# d 4 4

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
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

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

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

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.