업데이트 : 답변은 작성 당시 정확했으며 부동 소수점 정밀도는 to_csv / read_csv (정밀 성능 절충, 기본값은 성능 선호)에서 기본적으로 얻는 것이 아닙니다.
요즘이 에 해당하는 인수 및 사용할 인수 .float_format
pandas.DataFrame.to_csv
float_precision
pandas.from_csv
원본은 여전히 문제를 더 잘 파악하기 위해 읽을 가치가 있습니다.
"to_csv"함수뿐만 아니라 "read_csv"에서도 pandas의 버그였습니다. 부동 소수점 산술 이 프로그래머의주의를 요하는 주제라는 것은 사실 임에도 불구하고 일반적인 부동 소수점 문제는 아닙니다 . 아래의이 기사에서는이 주제에 대해 약간 설명합니다.
http://docs.python.org/2/tutorial/floatingpoint.html
"문제"를 보여주는 고전적인 원 라이너는 ...
>>> 0.1 + 0.1 + 0.1
0.30000000000000004
... 예상대로 0.3을 표시하지 않습니다. 반면에 고정 소수점 산술을 사용하여 계산을 처리하고 마지막 단계에서만 부동 소수점 산술 을 사용 하면 예상대로 작동합니다. 이것 좀 봐:
>>> (1 + 1 + 1) * 1.0 / 10
0.3
이 문제를 필사적으로 피해야한다면 모든 숫자를 정수로 포함하는 다른 CSV 파일을 만드는 것이 좋습니다. 예를 들어 100, 1000 또는 기타 편리한 요소를 곱하는 것과 같이합니다. 응용 프로그램 내에서 평소와 같이 CSV 파일을 읽으면 해당 정수 수치를 다시 얻을 수 있습니다. 그런 다음 이전에 곱한 것과 동일한 계수로 나눈 값을 부동 소수점으로 변환합니다.