@@ -2932,6 +2932,52 @@ def test_to_csv_decimal(self):
29322932 expected_float_format = ';col1;col2;col3\n 0;1;a;10,10\n '
29332933 self .assertEqual (df .to_csv (decimal = ',' ,sep = ';' , float_format = '%.2f' ), expected_float_format )
29342934
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+
29352981 def test_to_csv_date_format (self ):
29362982 # GH 10209
29372983 df_sec = DataFrame ({'A' : pd .date_range ('20130101' ,periods = 5 ,freq = 's' )})
0 commit comments