728x90
<groupby 의 as_index 와 관련된 오류>
dataframe.groupby('집계기준변수', as_index = True/False)['집계대상변수'].집계함수
대충 sales3 라는 데이터프레임에 있는 State 를 기준으로 Amt 를 합을 집계하고,
매출액(Amt)이 가장 높은 top 3를 보려한다
temp = sales3.groupby('State', as_index = True)['Amt'].sum()
temp.sort_values('Amt', ascending = False).head(3)
~~~
ValueError: No axis named Amt for object type Series
'해당 컬럼이 데이터프레임에 없다'는 오류임
해결법
as_index 를 False 로 바꿔주거나, 집계 대상 column 을 리스트로 전달해주면 오류가 나지 않는다
temp = sales3.groupby('State', as_index = False)['Amt'].sum()
temp = sales3.groupby('State', as_index = True)[['Amt']].sum()
오류 이유 분석
각 3가지 경우를 display 해보자
각각 display(temp) 실행
1.
temp = sales3.groupby('State', as_index = True)['Amt'].sum()
State 만 존재하고 Amt 라는 컬럼 명이 없다.
2.
temp = sales3.groupby('State', as_index = False)['Amt'].sum()
State, Amt 컬럼이 둘 다 존재하는 모습
3.
temp = sales3.groupby('State', as_index = True)[['Amt']].sum()
State 를 index 로 갖으며, 컬럼 Amt 도 존재함
결론
- as_index = True 일 때, 단일컬럼을 집계대상으로 넣어줄 시, 반환되는 것은 집계기준변수를 index 로 하는 '시리즈' 이고, 집계대상변수는 column 명이 되지 않는다.
- as_index = True 일 때, 컬럼리스트를 집계대상으로 넣어줄 시, 반환되는 것은 집계기준변수를 index 로 하는 '데이터프레임'이 되며 집계대상변수들은 columns 가 된다.
- as_index = False 일 때, 단일컬럼을 집계대상으로 넣어줄 시, 반환되는 것은 집계기준변수와 집계대상변수가 column 인 데이터 프레임이다. as_index 가 False 이면 단일컬럼을 넣어주더라도 무조건 데이터 프레임이 된다.
728x90
'개발 > 파이썬' 카테고리의 다른 글
Langchain mulltiple edges error, Graph Parallel Processing (0) | 2024.11.12 |
---|---|
PGVector Insert using SQLModel (2) | 2024.11.07 |
[pandas] (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape (0) | 2023.04.26 |
[keras] ValueError: No gradients provided for any variable: (0) | 2023.04.10 |
[pandas] 주피터 노트북에서 모든 행/열 보여주기 (0) | 2023.02.13 |