Pandas : 그룹별로 집계 한 후 열에서 작업 수행

코스 모사

다음 df가있는 경우 A 열로 그룹화하고 D 열을 각 A의 최대 D로 나누고 싶습니다.

df = pd.DataFrame({'A' : ['foo', 'bar', 'foo', 'bar',
...:    ...:                           'foo', 'bar', 'foo', 'foo'],
...:    ...:                    'B' : ['one', 'one', 'two', 'three',
...:    ...:                           'two', 'two', 'one', 'three'],
...:    ...:                    'C' : np.random.randn(8),
...:    ...:                    'D' : np.random.randn(8)})

나는 같은 것을 시도했다

max_by_id = df.groupby('A')['D'].max()
df = df.set_index('A')
df['D'] /= max_by_id.reset_index()['D']

하지만 이것은 나에게

ValueError: cannot reindex from a duplicate axis
EdChum

온 집계에서 계산 된 최대 groupby객체가 응집하여 원래 DF 열을 분할 할 경우 다음 호출 할 수있다, 따라서 에러가 감소 된 인덱스가 transformgroupby목적이므로 인덱스 정렬한다 :

In [192]:    
df['D'].div(df.groupby('A')['D'].transform('max'))

Out[192]:
0   -0.601098
1   -0.553823
2   -0.408006
3    1.000000
4    0.312029
5    0.709397
6    1.000000
7    0.140932
Name: D, dtype: float64

차이점을 확인할 수 있습니다.

In [193]:
df.groupby('A')['D'].transform('max')

Out[193]:
0    1.508660
1    1.378085
2    1.508660
3    1.378085
4    1.508660
5    1.378085
6    1.508660
7    1.508660
Name: D, dtype: float64

In [194]:    
df.groupby('A')['D'].max()

Out[194]:
A
bar    1.378085
foo    1.508660
Name: D, dtype: float64

또한 reset_index원래 grouped열 레이블을 제거하는 경우 :

In [198]:
max_by_id.reset_index()['D']

Out[198]:
0    0.215997
1    0.962928
Name: D, dtype: float64

그러나 그 전에 인덱스를 'A'열로 설정했지만 실패합니다.

df['D'] /= max_by_id.reset_index()['D']

또한 lambdawith apply사용 하여 동일한 작업을 수행 할 수 있습니다 lambda.

df.groupby('A')['D'].apply(lambda x: x.div(x.max()))

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

그룹 별 및 집계 작업 후 Pandas DataFrame의 특정 행에 액세스하는 방법

Pandas Dataframe에서 동일한 연결 행 집계 (시계열 그룹)

도메인에서 작업 그룹으로 변경 한 후 알 수없는 로그인 계정

Python 3.9 - Jupyter - Pandas - DataFrame: 집계 후 열별 그룹 누락

복잡한 Pandas 집계 후 열 값을 수집하는 방법

R에서 동일한 플래그로 식별되는 시계열 값 그룹에 대한 개별 작업

그룹화하는 동안 동일한 배열에서 null 값을 확인하는 $ cond로 집계 작업을 수행하는 방법

Pandas에서 시계열별로 그룹화하고 시작 / 중지 시간을 집계하는 방법

Pandas에서 groupby 후 다른 함수로 다른 열 집합 집계

Pandas에서 한 수준의 그룹화 된 데이터 집계

dplyr에서 그룹 별 합계를 얻은 후 행 백분율로 열 계산

하위 문서에 대한 집계 쿼리 후 상위 문서의 필드별로 그룹화

파워 쿼리에서 "모든 행별로 그룹화"작업 후 첫 번째 열 제거

groupby 작업 후 pandas 데이터 프레임 행에 대한 계산

동일한 Pandas 데이터 프레임의 한 열에서 두 개의 집계 작업을 수행하는 방법은 무엇입니까?

R : 순서에 관계없이 열별로 그룹화 한 다음 3 차 열에서 기능 수행

Python Pandas-날짜 및 그룹 별 계산으로 간단한 행 수

MongoDB 집계-모든 그룹화 수준에 대한 개수가있는 여러 키별로 그룹화

MySQL의 구문별로 그룹화 한 후 해당 집계되지 않은 열을 선택합니다.

그룹별로 동일한 열에서 파이프 작업

함수 별 그룹을 사용한 문자열 모드 집계

열 값 Pandas를 기반으로 그룹화 작업 수행

pandas- 열에서 동일한 값을 가진 연속 행 그룹화 및 집계

사용자 정의 함수에 대한 입력으로 여러 열이 있는 Pandas 그룹화된 집계

Pandas 데이터 프레임 그룹 별 하위 집합의 연속 행 차이로 인한 새 열 추가

Pandas에서 그룹별로 행 집합의 최빈값을 계산하는 방법

개인이 pandas에서 특정 작업을 수행 한 횟수 계산

그룹 별 합산을 수행 한 후 multindex 열 구조 유지

id로 데이터 프레임을 그룹화 한 후 작업 수행

TOP 리스트

뜨겁다태그

보관