AttributeError: 'DataFrame' object has no attribute 'append'
해석
이 에러는 DataFrame 객체에 append 속성이 존재하지 않기 때문에 발생합니다. 기본적으로, AttributeError는 해당 객체에 특정 메서드나 속성을 사용할 수 없다는 것을 의미합니다.
만약 에러 메세지가 AttributeError: 'DataFrame' object has no attribute 까지는 동일하지만 속성이 append가 아니라면 링크를 참조해 AttributeError의 일반론을 참고하시는 것이 좋습니다.
(참조 링크 : [pandas] Attribute Error 강의 (2) - 객체에서 발생한 경우)
에러 발생 상황 예시
기존 데이터 프레임 df에 새로운 데이터 new_row를 추가하려고 아래와 같은 코드를 사용했을 때 에러가 발생했습니다.
df = pd.DataFrame(df).append(new_row, ignore_index=True)
왜 에러가 발생하나요?
append 메서드는 과거에 데이터 프레임에 데이터를 추가하는 데 사용되었으나, 효율성과 혼란 방지를 위해 concat 메서드로 대체되었습니다. 두 메서드는 병행해서 사용되다가, 판다스 2.0부터는 append 메서드가 완전히 제거되었습니다. 그래서 데이터 프레임 객체에 append 속성이 더이상 존재하지 않기 때문에 발생합니다.
해결 방법
object has no attribute 에러의 경우 해당 객체에 사용한 속성이 존재하지 않기에 다른 속성으로 수정하거나 객체를 수정해야 합니다. 위 예시의 경우 데이터 프레임에 append 속성을 사용할 수 없기에 append 대신 concat 함수를 사용하는 것이 해결책입니다. 다음과 같이 코드를 변경하여 에러를 해결할 수 있습니다.
df = pd.concat([df, pd.DataFrame([new_row])], ignore_index=True)
결론
AttributeError는 해당 객체에 특정 메서드나 속성을 사용할 수 없다는 것을 의미합니다. 판다스 2.0부터는 append 메서드가 삭제되었으므로, 기존에 append를 사용했던 사용자들도 이제부터는 concat 함수를 사용해야 합니다. 기존에 concat 함수를 사용하던 사용자는 계속 concat 함수를 사용하면 됩니다.
유튜브에서 판다스 강의 중입니다.
'여러 가지 이야기 > 에러 모음' 카테고리의 다른 글
TypeError: 'TimeGrouper' object is not callable (0) | 2023.08.23 |
---|---|
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 |