-
카테고리
-
세부 분야
데이터 분석
-
해결 여부
미해결
9분경에 나오는 for file in csv_list 코드부분에서 질문이 있습니다.
23.08.09 10:30 작성 조회수 182
0
for file in csv_list:
doc = create_dateframe(file)
final_doc = pd.merge(final_doc, doc, how='outer', 이하생략)
final_doc = final_doc.fillna(0
return final_doc
이렇게 코드를 작성해도 되지 않을까?라는 생각이 들었는데, 굳이 if문을 거치는 이유가 무엇인가요?
처음하는 파이썬 데이터 분석 (쉽게! 전처리, pandas, 시각화까지 전과정 기본 익히기) [데이터과학 Part1]
pandas 라이브러리로 실제 데이터 전처리하기4
강의실 바로가기
답변을 작성해보세요.
0
잔재미코딩 DaveLee
지식공유자2023.08.10
안녕하세요. 답변도우미입니다.
기본적으로는 동일한 기능을 하는 코드는 다양하게 작성이 가능합니다. 그래서 이야기하신 방안도 가능은 하지 않을까 생각합니다. 제시하신 코드 수정에서 주목해야 할 부분은 final_doc
이 초기화되지 않았다는 것입니다. 첫 번째 file
에서 pd.merge
를 호출할 때 final_doc
이 아직 정의되지 않았기 때문에 오류가 발생할 수 있습니다.
원래 코드에서는 first_doc
라는 플래그를 사용하여 첫 번째 파일의 경우 final_doc
을 doc
으로 초기화하고, 그 이후의 파일들에 대해서는 final_doc
과 merge하는 방식을 사용하고 있습니다.
제안하신 수정을 정상적으로 동작하게 하려면, final_doc
의 초기 상태를 정의해주는 작업이 필요합니다. 아래는 수정된 코드의 예시입니다:
final_doc = None
for file in csv_list:
doc = create_dateframe(file)
if final_doc is None:
final_doc = doc
else:
final_doc = pd.merge(final_doc, doc, how='outer', left_index=True, right_index=True)
final_doc = final_doc.fillna(0)
return final_doc
이렇게 수정하면 첫 번째 file
에서 final_doc
이 None
인 것을 확인하고 초기화하고, 그 다음부터는 기존 final_doc
과 새로운 doc
을 merge하게 됩니다.
따라서 위와 같이 수정하면 원래의 코드와 동일한 기능을 수행할 수 있습니다.
감사합니다.
답변 1