본문 바로가기

Data Engineering

FutureWarning: 데이터프레임 행 subset 얻기

Python pandas.DataFrame 각 row의 Subset을 얻기 위해서(doc_data) 아래와 같이 코드를 작성했다.

for i, row in my_df.iterrows():
    doc_names = {"key_example1", "key_example2", "key_example3"}
    doc_data = {key:row[key] for key in row.keys() & doc_names}
    doc_dict = {"doc": doc_data}

 

그랬더니 아래와 같은 경고 문구가 떴다.

FutureWarning: Index.__and__ operating as a set operation is deprecated, in the future this will be a logical operation matching Series.__and__.  Use index.intersection(other) instead

 

warning은 개발을 하면서, 당장 오류가 발생하여 프로그램이 종료되지 않더라도 성능의 문제가 있다. 또한 이런 경고 문구가 뜨는 경우에는 빠르게 코드를 수정해주는 것이 좋다. 향후 버전 업이 되면, 현재와 같은 문법을 지원하지 않기 때문이다. 

 

아래와 같이 변경하여 사용하면 된다.

 

my_sub_df = my_df[my_df.columns.intersection(doc_names)]
for i, row in my_sub_df.iterrows():
    doc_names = ["key_example1", "key_example2", "key_example3"]
    doc_dict = {"doc": row}

 

References 

https://stackoverflow.com/questions/67454971/intersection-of-a-dataframe-with-a-list-of-columns