이전에는 멀쩡히 잘 사용했던 코드인데, 갑자기 다음과 같은 에러가 뜹니다.
import pandas as pd
df = pd.read_csv('../data/data.csv', engine='python')
data_y = df['label']
data_x = df.drop('label', 1)
Pandas 깃허브에 들어가서 확인해보시면 그 이유를 알 수 있습니다.
버전업에 따라 drop 함수 1.x.x 버전에서는 뒤 변수들이 일반 위치인자 (positional arguments)로 인식합니다.
따라서 따로 인자명을 주지 않아도, 위치에 기반하여 순서대로 인식됩니다.
(1은 당연히 다음 axis 변수에 대한 값임)
그러나 2.x.x 버전 부터는 drop을 포함한 다른 여러 함수들(concate...)에 *를 추가함에 따라 키워드 인자 (keyword-only arguments)로 인식하게 됩니다.
따라서 인자명 (axis)을 명시적으로 사용해서 함수에 전달해야 합니다.
2점대 이상 버전에서 올바르게 사용하는 방법은 아래와 같습니다.
import pandas as pd
df = pd.read_csv('../data/data.csv', engine='python')
data_y = df['label']
data_x = df.drop('label', axis=1)
[Reference]
https://github.com/pandas-dev/pandas/blob/v1.5.2/pandas/core/frame.py
https://github.com/pandas-dev/pandas/blob/v2.2.3/pandas/core/frame.py#L5433-L5589