에러 메세지
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 구매 페이지
'여러 가지 이야기 > 에러 모음' 카테고리의 다른 글
[pandas] AttributeError: 'DataFrame' object has no attribute 'append' (0) | 2024.02.11 |
---|---|
ValueError: pattern contains no capture groups (0) | 2023.08.09 |
TypeError: unhashable type: 'set' (0) | 2023.08.07 |
OverflowError: Python int too large to convert to C long (0) | 2023.08.07 |
TypeError: '<' not supported between instances of 'str' and 'int' (0) | 2023.08.07 |