카테고리 없음
2024. 5. 23. 02:15
반응형
보통 dataframe['컬럼명'] = round( dataframe['컬럼명'] 명령어를 실행하면 데이터프레임의 '컬럼명' 열의 값들이 소수점 둘째 자리까지 반올림되어 저장됩니다. 그러나 이 데이터를 엑셀 파일로 저장할 때 소수점 자릿수가 엑셀에서 제한되지 않은 상태로 보이는 경우가 있습니다.
해당 원인은 크게 두가지로 확인됩니다.
1. 엑셀의 표시 형식 (Display Format): 엑셀은 데이터를 저장할 때 숫자의 소수점 자릿수 형식을 따로 지정하지 않으면 자동으로 표시합니다. 즉, 저장된 값은 2자리 소수점으로 반올림되었지만 엑셀 셀의 서식에 따라 더 많은 자릿수가 표시될 수 있습니다. 예를 들어, '등락률' 값이 3.456으로 반올림되면 3.46으로 저장되지만, 엑셀에서 기본 소수점 자릿수 설정에 따라 3.460000처럼 보일 수 있습니다.
2.데이터 유형 (Data Type): pandas에서 round 함수는 데이터의 값을 반올림하지만, 데이터의 유형이 float인 경우 엑셀은 저장된 모든 유효 자릿수를 표시할 수 있습니다.
이런한 원인의 문제를 해결하기 위해서, 엑셀에 저장할 때 소수점 자릿수를 고정하는 포맷을 설정해주면 됩니다.
예를 들어, to_excel 함수를 사용할 때 float_format 인자를 사용하여 소수점 자릿수를 고정할 수 있습니다.
prefix = 'BC_VALLET_' + strPivotDay[2:]
suffix = datetime.datetime.now().strftime("_%y%m%d_%H%M%S.xlsx") # 연월일_시분초
filename = fileDir + prefix + suffix
writer = pd.ExcelWriter(filename)
mergeDf.to_excel(writer, sheet_name=prefix,float_format="%.2f", index=False)
writer.close()
반응형