@@ -130,29 +130,37 @@ def test_to_csv_escapechar(self):
130
130
131
131
def test_csv_to_string (self ):
132
132
df = DataFrame ({'col' : [1 , 2 ]})
133
- expected = ',col\n 0,1\n 1,2\n '
133
+ expected = (',col' + os .linesep +
134
+ '0,1' + os .linesep +
135
+ '1,2' + os .linesep )
134
136
assert df .to_csv () == expected
135
137
136
138
def test_to_csv_decimal (self ):
137
139
# GH 781
138
140
df = DataFrame ({'col1' : [1 ], 'col2' : ['a' ], 'col3' : [10.1 ]})
139
141
140
- expected_default = ',col1,col2,col3\n 0,1,a,10.1\n '
142
+ expected_default = (',col1,col2,col3' + os .linesep +
143
+ '0,1,a,10.1' + os .linesep )
141
144
assert df .to_csv () == expected_default
142
145
143
- expected_european_excel = ';col1;col2;col3\n 0;1;a;10,1\n '
146
+ expected_european_excel = (';col1;col2;col3' + os .linesep +
147
+ '0;1;a;10,1' + os .linesep )
144
148
assert df .to_csv (decimal = ',' , sep = ';' ) == expected_european_excel
145
149
146
- expected_float_format_default = ',col1,col2,col3\n 0,1,a,10.10\n '
150
+ expected_float_format_default = (',col1,col2,col3' + os .linesep +
151
+ '0,1,a,10.10' + os .linesep )
147
152
assert df .to_csv (float_format = '%.2f' ) == expected_float_format_default
148
153
149
- expected_float_format = ';col1;col2;col3\n 0;1;a;10,10\n '
154
+ expected_float_format = (';col1;col2;col3' + os .linesep +
155
+ '0;1;a;10,10' + os .linesep )
150
156
assert df .to_csv (decimal = ',' , sep = ';' ,
151
157
float_format = '%.2f' ) == expected_float_format
152
158
153
159
# GH 11553: testing if decimal is taken into account for '0.0'
154
160
df = pd .DataFrame ({'a' : [0 , 1.1 ], 'b' : [2.2 , 3.3 ], 'c' : 1 })
155
- expected = 'a,b,c\n 0^0,2^2,1\n 1^1,3^3,1\n '
161
+ expected = ('a,b,c' + os .linesep +
162
+ '0^0,2^2,1' + os .linesep +
163
+ '1^1,3^3,1' + os .linesep )
156
164
assert df .to_csv (index = False , decimal = '^' ) == expected
157
165
158
166
# same but for an index
@@ -165,7 +173,9 @@ def test_to_csv_float_format(self):
165
173
# testing if float_format is taken into account for the index
166
174
# GH 11553
167
175
df = pd .DataFrame ({'a' : [0 , 1 ], 'b' : [2.2 , 3.3 ], 'c' : 1 })
168
- expected = 'a,b,c\n 0,2.20,1\n 1,3.30,1\n '
176
+ expected = ('a,b,c' + os .linesep +
177
+ '0,2.20,1' + os .linesep +
178
+ '1,3.30,1' + os .linesep )
169
179
assert df .set_index ('a' ).to_csv (float_format = '%.2f' ) == expected
170
180
171
181
# same for a multi-index
@@ -176,19 +186,25 @@ def test_to_csv_na_rep(self):
176
186
# testing if NaN values are correctly represented in the index
177
187
# GH 11553
178
188
df = DataFrame ({'a' : [0 , np .NaN ], 'b' : [0 , 1 ], 'c' : [2 , 3 ]})
179
- expected = "a,b,c\n 0.0,0,2\n _,1,3\n "
189
+ expected = ('a,b,c' + os .linesep +
190
+ '0.0,0,2' + os .linesep +
191
+ '_,1,3' + os .linesep )
180
192
assert df .set_index ('a' ).to_csv (na_rep = '_' ) == expected
181
193
assert df .set_index (['a' , 'b' ]).to_csv (na_rep = '_' ) == expected
182
194
183
195
# now with an index containing only NaNs
184
196
df = DataFrame ({'a' : np .NaN , 'b' : [0 , 1 ], 'c' : [2 , 3 ]})
185
- expected = "a,b,c\n _,0,2\n _,1,3\n "
197
+ expected = ('a,b,c' + os .linesep +
198
+ '_,0,2' + os .linesep +
199
+ '_,1,3' + os .linesep )
186
200
assert df .set_index ('a' ).to_csv (na_rep = '_' ) == expected
187
201
assert df .set_index (['a' , 'b' ]).to_csv (na_rep = '_' ) == expected
188
202
189
203
# check if na_rep parameter does not break anything when no NaN
190
204
df = DataFrame ({'a' : 0 , 'b' : [0 , 1 ], 'c' : [2 , 3 ]})
191
- expected = "a,b,c\n 0,0,2\n 0,1,3\n "
205
+ expected = ('a,b,c' + os .linesep +
206
+ '0,0,2' + os .linesep +
207
+ '0,1,3' + os .linesep )
192
208
assert df .set_index ('a' ).to_csv (na_rep = '_' ) == expected
193
209
assert df .set_index (['a' , 'b' ]).to_csv (na_rep = '_' ) == expected
194
210
@@ -199,33 +215,46 @@ def test_to_csv_date_format(self):
199
215
df_day = DataFrame ({'A' : pd .date_range ('20130101' , periods = 5 , freq = 'd' )
200
216
})
201
217
202
- expected_default_sec = (',A\n 0,2013-01-01 00:00:00\n 1,'
203
- '2013-01-01 00:00:01\n 2,2013-01-01 00:00:02'
204
- '\n 3,2013-01-01 00:00:03\n 4,'
205
- '2013-01-01 00:00:04\n ' )
218
+ expected_default_sec = (',A' + os .linesep +
219
+ '0,2013-01-01 00:00:00' + os .linesep +
220
+ '1,2013-01-01 00:00:01' + os .linesep +
221
+ '2,2013-01-01 00:00:02' + os .linesep +
222
+ '3,2013-01-01 00:00:03' + os .linesep +
223
+ '4,2013-01-01 00:00:04' + os .linesep )
206
224
assert df_sec .to_csv () == expected_default_sec
207
225
208
- expected_ymdhms_day = (',A\n 0,2013-01-01 00:00:00\n 1,'
209
- '2013-01-02 00:00:00\n 2,2013-01-03 00:00:00'
210
- '\n 3,2013-01-04 00:00:00\n 4,'
211
- '2013-01-05 00:00:00\n ' )
226
+ expected_ymdhms_day = (',A' + os .linesep +
227
+ '0,2013-01-01 00:00:00' + os .linesep +
228
+ '1,2013-01-02 00:00:00' + os .linesep +
229
+ '2,2013-01-03 00:00:00' + os .linesep +
230
+ '3,2013-01-04 00:00:00' + os .linesep +
231
+ '4,2013-01-05 00:00:00' + os .linesep )
212
232
assert (df_day .to_csv (date_format = '%Y-%m-%d %H:%M:%S' ) ==
213
233
expected_ymdhms_day )
214
234
215
- expected_ymd_sec = (',A\n 0,2013-01-01\n 1,2013-01-01\n 2,'
216
- '2013-01-01\n 3,2013-01-01\n 4,2013-01-01\n ' )
235
+ expected_ymd_sec = (',A' + os .linesep +
236
+ '0,2013-01-01' + os .linesep +
237
+ '1,2013-01-01' + os .linesep +
238
+ '2,2013-01-01' + os .linesep +
239
+ '3,2013-01-01' + os .linesep +
240
+ '4,2013-01-01' + os .linesep )
217
241
assert df_sec .to_csv (date_format = '%Y-%m-%d' ) == expected_ymd_sec
218
242
219
- expected_default_day = (',A\n 0,2013-01-01\n 1,2013-01-02\n 2,'
220
- '2013-01-03\n 3,2013-01-04\n 4,2013-01-05\n ' )
243
+ expected_default_day = (',A' + os .linesep +
244
+ '0,2013-01-01' + os .linesep +
245
+ '1,2013-01-02' + os .linesep +
246
+ '2,2013-01-03' + os .linesep +
247
+ '3,2013-01-04' + os .linesep +
248
+ '4,2013-01-05' + os .linesep )
221
249
assert df_day .to_csv () == expected_default_day
222
250
assert df_day .to_csv (date_format = '%Y-%m-%d' ) == expected_default_day
223
251
224
252
# testing if date_format parameter is taken into account for
225
253
# multi-indexed dataframes (GH 7791)
226
254
df_sec ['B' ] = 0
227
255
df_sec ['C' ] = 1
228
- expected_ymd_sec = 'A,B,C\n 2013-01-01,0,1\n '
256
+ expected_ymd_sec = ('A,B,C' + os .linesep +
257
+ '2013-01-01,0,1' + os .linesep )
229
258
df_sec_grouped = df_sec .groupby ([pd .Grouper (key = 'A' , freq = '1h' ), 'B' ])
230
259
assert (df_sec_grouped .mean ().to_csv (date_format = '%Y-%m-%d' ) ==
231
260
expected_ymd_sec )
@@ -234,28 +263,30 @@ def test_to_csv_multi_index(self):
234
263
# GH 6618
235
264
df = DataFrame ([1 ], columns = pd .MultiIndex .from_arrays ([[1 ], [2 ]]))
236
265
237
- exp = ",1\n ,2\n 0,1\n "
266
+ exp = (',1' + os .linesep +
267
+ ',2' + os .linesep +
268
+ '0,1' + os .linesep )
238
269
assert df .to_csv () == exp
239
270
240
- exp = "1 \n 2 \n 1 \n "
271
+ exp = ( '1' + os . linesep + '2' + os . linesep + '1' + os . linesep )
241
272
assert df .to_csv (index = False ) == exp
242
273
243
274
df = DataFrame ([1 ], columns = pd .MultiIndex .from_arrays ([[1 ], [2 ]]),
244
275
index = pd .MultiIndex .from_arrays ([[1 ], [2 ]]))
245
276
246
- exp = " ,,1\n ,,2\n 1 ,2,1\n "
277
+ exp = ( ' ,,1' + os . linesep + ' ,,2' + os . linesep + '1 ,2,1' + os . linesep )
247
278
assert df .to_csv () == exp
248
279
249
- exp = "1 \n 2 \n 1 \n "
280
+ exp = ( '1' + os . linesep + '2' + os . linesep + '1' + os . linesep )
250
281
assert df .to_csv (index = False ) == exp
251
282
252
283
df = DataFrame (
253
284
[1 ], columns = pd .MultiIndex .from_arrays ([['foo' ], ['bar' ]]))
254
285
255
- exp = " ,foo\n ,bar\n 0,1 \n "
286
+ exp = ( ' ,foo' + os . linesep + ' ,bar' + os . linesep + '0,1' + os . linesep )
256
287
assert df .to_csv () == exp
257
288
258
- exp = " foo\n bar \n 1 \n "
289
+ exp = ( ' foo' + os . linesep + 'bar' + os . linesep + '1' + os . linesep )
259
290
assert df .to_csv (index = False ) == exp
260
291
261
292
def test_to_csv_string_array_ascii (self ):
@@ -381,11 +412,9 @@ def test_to_csv_stdout_file(self):
381
412
# GH 21561
382
413
df = pd .DataFrame ([['foo' , 'bar' ], ['baz' , 'qux' ]],
383
414
columns = ['name_1' , 'name_2' ])
384
- expected_ascii = '''\
385
- ,name_1,name_2
386
- 0,foo,bar
387
- 1,baz,qux
388
- '''
415
+ expected_ascii = (',name_1,name_2' + os .linesep +
416
+ '0,foo,bar' + os .linesep +
417
+ '1,baz,qux' + os .linesep )
389
418
df .to_csv (sys .stdout , encoding = 'ascii' )
390
419
output = sys .stdout .getvalue ()
391
420
assert output == expected_ascii
0 commit comments