본문 바로가기
여러 가지 이야기/에러 모음

TypeError: 'TimeGrouper' object is not callable

by 김판다t 2023. 8. 23.
에러 메세지

 

TypeError: 'TimeGrouper' object is not callable

 

해석: TypeError: 'TimeGrouper' 객체는 호출할 수 없습니다.

이 에러는 groupby와 resample을 함께 사용할 때, resample을 먼저 호출하면 발생하는 오류입니다.


에러 발생 상황

 

다음은 에러가 발생하는 상황을 예시와 함께 살펴보겠습니다.

import pandas as pd
# 날짜 범위 생성
idx = pd.date_range('2023-01-01', periods=6, freq='20D 9h 10min')

# 데이터 프레임 생성
df = pd.DataFrame(
    {'날짜': idx, 
     '금액': [10000, 20000, 30000, 40000, 50000, 60000], 
     '구분': ['입금', '입금', '출금', '입금', '입금', '출금']}
)

 

df

 

 

이 데이터에서 '입금'과 '출금'을 기준으로 나누어 월별로 집계를 하고자 합니다. 이때 groupby와 resample을 사용하면 간단히 처리할 수 있지만, 함수 호출 순서가 매우 중요합니다.

 

# 잘못된 코드: resample을 먼저 호출
df.resample('M', on='날짜').groupby('구분')['금액'].sum().unstack(0)
TypeError: 'TimeGrouper' object is not callable

 

 

해결 방법

 

이 에러는 resample을 먼저 호출했기 때문에 발생합니다. 해결하려면 groupby를 먼저 호출하고, 그다음 resample을 사용해야 합니다.

 

df.groupby('구분').resample('M', on='날짜')['금액'].sum().unstack(0)

 

output:

 

위 코드를 실행하면 '입금'과 '출금'을 기준으로 월별 집계를 얻을 수 있습니다.

 

결론

 

groupby와 resample을 함께 사용할 때 함수 호출 순서가 매우 중요합니다. groupby를 먼저 호출하고, 그다음에 resample을 호출해야 정상적으로 작동합니다. 

 


교보문고 구매 페이지, 알라딘 구매 페이지yes24 구매 페이지