https://github.com/reodinas/streamlit_leisure
프로젝트 진행 중 발생한 문제 해결 과정을 기록한 포스트입니다.
매주 조사하여 추가되는 데이터의, 추가본을 업로드 하면 데이터를 합치고 저장하는 기능을 구현했다.
개선사항으로 이상한 데이터가 들어왔을 때 합치지 않기 위해 컬럼명이 일치하는 지를 검사하려 한다.
코드는 아래와 같다.
if np.all(df_origin.columns == df_new.columns):
정상적으로 작동할 줄 알았지만 에러가 발생했다.
이 에러의 원인은 전혀 다른 데이터프레임을 업로드 했을 때,
양쪽 컬럼의 갯수가 다르면 비교할 배열의 짝이 안 맞기 때문에 발생하는 것이다.
해결하기 위해 try, except 구문으로 예외처리를 했다.
전체 코드
try:
# 컬럼명이 같으면
if np.all(df_origin.columns == df_new.columns):
#날짜가 중복되면
if df_new['EXAMIN_BEGIN_DE'].unique() in df_origin['EXAMIN_BEGIN_DE'].unique():
st.error('중복된 데이터입니다.')
else:
df_origin = pd.concat([df_origin, df_new])
df_origin.dropna(axis=0, inplace=True)
df_origin = df_origin.sort_values((['EXAMIN_BEGIN_DE', 'RESPOND_ID']))
df_origin = df_origin.reset_index().drop('index', axis=1)
df_origin.to_csv('data/df_origin.csv')
st.success('저장에 성공했습니다.')
st.dataframe(df_origin)
st.write(f'현재 데이터는 {df_origin.shape[0]}행, {df_origin.shape[1]}열 입니다')
examine_date = df_origin['EXAMIN_BEGIN_DE'].unique()
st.write(f'현재 데이터의 조사 날짜는 {examine_date} 입니다.')
else:
st.error('다른 형식의 파일입니다.')
except ValueError:
st.error('다른 형식의 파일입니다.')
'Debugging' 카테고리의 다른 글
git pull 에러 - error: Your local changes to the following files would be overwritten by merge (0) | 2022.12.23 |
---|---|
streamlit_kmeans 진행중 에러 - UnicodeDecodeError (0) | 2022.12.23 |
streamlit_kmeans 진행중 경고 - UserWarning (0) | 2022.12.23 |
streamlit_leisure 진행중 에러(3) - ValueError: Lengths must match to compare (0) | 2022.12.22 |
streamlit_leisure 진행중 에러(2) - DuplicateWidgetID (0) | 2022.12.20 |