@@ -2932,6 +2932,52 @@ def test_to_csv_decimal(self):
2932
2932
expected_float_format = ';col1;col2;col3\n 0;1;a;10,10\n '
2933
2933
self .assertEqual (df .to_csv (decimal = ',' ,sep = ';' , float_format = '%.2f' ), expected_float_format )
2934
2934
2935
+ # GH 11553: testing if decimal is taken into account for '0.0'
2936
+ df = pd .DataFrame ({'a' : [0 , 1.1 ], 'b' : [2.2 , 3.3 ], 'c' : 1 })
2937
+ expected = 'a,b,c\n 0^0,2^2,1\n 1^1,3^3,1\n '
2938
+ self .assertEqual (
2939
+ df .to_csv (index = False , decimal = '^' ), expected )
2940
+
2941
+ # same but for an index
2942
+ self .assertEqual (
2943
+ df .set_index ('a' ).to_csv (decimal = '^' ), expected )
2944
+
2945
+ # same for a multi-index
2946
+ self .assertEqual (
2947
+ df .set_index (['a' , 'b' ]).to_csv (decimal = "^" ), expected )
2948
+
2949
+ def test_to_csv_float_format (self ):
2950
+ # testing if float_format is taken into account for the index
2951
+ # GH 11553
2952
+ df = pd .DataFrame ({'a' : [0 , 1 ], 'b' : [2.2 , 3.3 ], 'c' : 1 })
2953
+ expected = 'a,b,c\n 0,2.20,1\n 1,3.30,1\n '
2954
+ self .assertEqual (
2955
+ df .set_index ('a' ).to_csv (float_format = '%.2f' ), expected )
2956
+
2957
+ # same for a multi-index
2958
+ self .assertEqual (
2959
+ df .set_index (['a' , 'b' ]).to_csv (float_format = '%.2f' ), expected )
2960
+
2961
+ def test_to_csv_na_rep (self ):
2962
+ # testing if NaN values are correctly represented in the index
2963
+ # GH 11553
2964
+ df = DataFrame ({'a' : [0 , np .NaN ], 'b' : [0 , 1 ], 'c' : [2 , 3 ]})
2965
+ expected = "a,b,c\n 0.0,0,2\n _,1,3\n "
2966
+ self .assertEqual (df .set_index ('a' ).to_csv (na_rep = '_' ), expected )
2967
+ self .assertEqual (df .set_index (['a' , 'b' ]).to_csv (na_rep = '_' ), expected )
2968
+
2969
+ # now with an index containing only NaNs
2970
+ df = DataFrame ({'a' : np .NaN , 'b' : [0 , 1 ], 'c' : [2 , 3 ]})
2971
+ expected = "a,b,c\n _,0,2\n _,1,3\n "
2972
+ self .assertEqual (df .set_index ('a' ).to_csv (na_rep = '_' ), expected )
2973
+ self .assertEqual (df .set_index (['a' , 'b' ]).to_csv (na_rep = '_' ), expected )
2974
+
2975
+ # check if na_rep parameter does not break anything when no NaN
2976
+ df = DataFrame ({'a' : 0 , 'b' : [0 , 1 ], 'c' : [2 , 3 ]})
2977
+ expected = "a,b,c\n 0,0,2\n 0,1,3\n "
2978
+ self .assertEqual (df .set_index ('a' ).to_csv (na_rep = '_' ), expected )
2979
+ self .assertEqual (df .set_index (['a' , 'b' ]).to_csv (na_rep = '_' ), expected )
2980
+
2935
2981
def test_to_csv_date_format (self ):
2936
2982
# GH 10209
2937
2983
df_sec = DataFrame ({'A' : pd .date_range ('20130101' ,periods = 5 ,freq = 's' )})
0 commit comments