31
31
32
32
class TestDataFrameToCSV (TestData ):
33
33
34
+ def read_csv (self , path , ** kwargs ):
35
+ params = dict (index_col = 0 , parse_dates = True )
36
+ params .update (** kwargs )
37
+
38
+ return pd .read_csv (path , ** params )
39
+
34
40
def test_to_csv_from_csv1 (self ):
35
41
36
42
with ensure_clean ('__tmp_to_csv_from_csv1__' ) as path :
@@ -43,24 +49,30 @@ def test_to_csv_from_csv1(self):
43
49
44
50
# test roundtrip
45
51
self .tsframe .to_csv (path )
46
- recons = DataFrame .from_csv (path )
47
-
52
+ recons = self .read_csv (path )
48
53
assert_frame_equal (self .tsframe , recons )
49
54
55
+ with tm .assert_produces_warning (FutureWarning ,
56
+ check_stacklevel = False ):
57
+ depr_recons = DataFrame .from_csv (path )
58
+ assert_frame_equal (self .tsframe , depr_recons )
59
+
50
60
self .tsframe .to_csv (path , index_label = 'index' )
51
- recons = DataFrame .from_csv (path , index_col = None )
61
+ recons = self .read_csv (path , index_col = None )
62
+
52
63
assert (len (recons .columns ) == len (self .tsframe .columns ) + 1 )
53
64
54
65
# no index
55
66
self .tsframe .to_csv (path , index = False )
56
- recons = DataFrame . from_csv (path , index_col = None )
67
+ recons = self . read_csv (path , index_col = None )
57
68
assert_almost_equal (self .tsframe .values , recons .values )
58
69
59
70
# corner case
60
71
dm = DataFrame ({'s1' : Series (lrange (3 ), lrange (3 )),
61
72
's2' : Series (lrange (2 ), lrange (2 ))})
62
73
dm .to_csv (path )
63
- recons = DataFrame .from_csv (path )
74
+
75
+ recons = self .read_csv (path )
64
76
assert_frame_equal (dm , recons )
65
77
66
78
def test_to_csv_from_csv2 (self ):
@@ -71,27 +83,26 @@ def test_to_csv_from_csv2(self):
71
83
df = DataFrame (np .random .randn (3 , 3 ), index = ['a' , 'a' , 'b' ],
72
84
columns = ['x' , 'y' , 'z' ])
73
85
df .to_csv (path )
74
- result = DataFrame . from_csv (path )
86
+ result = self . read_csv (path )
75
87
assert_frame_equal (result , df )
76
88
77
89
midx = MultiIndex .from_tuples (
78
90
[('A' , 1 , 2 ), ('A' , 1 , 2 ), ('B' , 1 , 2 )])
79
91
df = DataFrame (np .random .randn (3 , 3 ), index = midx ,
80
92
columns = ['x' , 'y' , 'z' ])
93
+
81
94
df .to_csv (path )
82
- result = DataFrame .from_csv (path , index_col = [0 , 1 , 2 ],
83
- parse_dates = False )
84
- # TODO from_csv names index ['Unnamed: 1', 'Unnamed: 2'] should it
85
- # ?
95
+ result = self .read_csv (path , index_col = [0 , 1 , 2 ],
96
+ parse_dates = False )
86
97
assert_frame_equal (result , df , check_names = False )
87
98
88
99
# column aliases
89
100
col_aliases = Index (['AA' , 'X' , 'Y' , 'Z' ])
90
101
self .frame2 .to_csv (path , header = col_aliases )
91
- rs = DataFrame .from_csv (path )
102
+
103
+ rs = self .read_csv (path )
92
104
xp = self .frame2 .copy ()
93
105
xp .columns = col_aliases
94
-
95
106
assert_frame_equal (xp , rs )
96
107
97
108
pytest .raises (ValueError , self .frame2 .to_csv , path ,
@@ -231,8 +242,9 @@ def make_dtnat_arr(n, nnat=None):
231
242
with ensure_clean ('1.csv' ) as pth :
232
243
df = DataFrame (dict (a = s1 , b = s2 ))
233
244
df .to_csv (pth , chunksize = chunksize )
234
- recons = DataFrame .from_csv (pth )._convert (datetime = True ,
235
- coerce = True )
245
+
246
+ recons = self .read_csv (pth )._convert (datetime = True ,
247
+ coerce = True )
236
248
assert_frame_equal (df , recons , check_names = False ,
237
249
check_less_precise = True )
238
250
@@ -247,16 +259,17 @@ def _do_test(df, r_dtype=None, c_dtype=None,
247
259
if rnlvl is not None :
248
260
kwargs ['index_col' ] = lrange (rnlvl )
249
261
kwargs ['header' ] = lrange (cnlvl )
262
+
250
263
with ensure_clean ('__tmp_to_csv_moar__' ) as path :
251
264
df .to_csv (path , encoding = 'utf8' ,
252
265
chunksize = chunksize , tupleize_cols = False )
253
- recons = DataFrame .from_csv (
254
- path , tupleize_cols = False , ** kwargs )
266
+ recons = self .read_csv (path , tupleize_cols = False , ** kwargs )
255
267
else :
256
268
kwargs ['header' ] = 0
269
+
257
270
with ensure_clean ('__tmp_to_csv_moar__' ) as path :
258
271
df .to_csv (path , encoding = 'utf8' , chunksize = chunksize )
259
- recons = DataFrame . from_csv (path , ** kwargs )
272
+ recons = self . read_csv (path , ** kwargs )
260
273
261
274
def _to_uni (x ):
262
275
if not isinstance (x , compat .text_type ):
@@ -398,7 +411,7 @@ def test_to_csv_from_csv_w_some_infs(self):
398
411
399
412
with ensure_clean () as path :
400
413
self .frame .to_csv (path )
401
- recons = DataFrame . from_csv (path )
414
+ recons = self . read_csv (path )
402
415
403
416
# TODO to_csv drops column name
404
417
assert_frame_equal (self .frame , recons , check_names = False )
@@ -413,7 +426,7 @@ def test_to_csv_from_csv_w_all_infs(self):
413
426
414
427
with ensure_clean () as path :
415
428
self .frame .to_csv (path )
416
- recons = DataFrame . from_csv (path )
429
+ recons = self . read_csv (path )
417
430
418
431
# TODO to_csv drops column name
419
432
assert_frame_equal (self .frame , recons , check_names = False )
@@ -448,11 +461,13 @@ def test_to_csv_headers(self):
448
461
to_df = DataFrame ([[1 , 2 ], [3 , 4 ]], columns = ['X' , 'Y' ])
449
462
with ensure_clean ('__tmp_to_csv_headers__' ) as path :
450
463
from_df .to_csv (path , header = ['X' , 'Y' ])
451
- recons = DataFrame .from_csv (path )
464
+ recons = self .read_csv (path )
465
+
452
466
assert_frame_equal (to_df , recons )
453
467
454
468
from_df .to_csv (path , index = False , header = ['X' , 'Y' ])
455
- recons = DataFrame .from_csv (path )
469
+ recons = self .read_csv (path )
470
+
456
471
recons .reset_index (inplace = True )
457
472
assert_frame_equal (to_df , recons )
458
473
@@ -471,13 +486,15 @@ def test_to_csv_multiindex(self):
471
486
472
487
# round trip
473
488
frame .to_csv (path )
474
- df = DataFrame .from_csv (path , index_col = [0 , 1 ], parse_dates = False )
489
+
490
+ df = self .read_csv (path , index_col = [0 , 1 ],
491
+ parse_dates = False )
475
492
476
493
# TODO to_csv drops column name
477
494
assert_frame_equal (frame , df , check_names = False )
478
495
assert frame .index .names == df .index .names
479
496
480
- # needed if setUP becomes a classmethod
497
+ # needed if setUp becomes a class method
481
498
self .frame .index = old_index
482
499
483
500
# try multiindex with dates
@@ -487,21 +504,22 @@ def test_to_csv_multiindex(self):
487
504
tsframe .index = MultiIndex .from_arrays (new_index )
488
505
489
506
tsframe .to_csv (path , index_label = ['time' , 'foo' ])
490
- recons = DataFrame .from_csv (path , index_col = [0 , 1 ])
507
+ recons = self .read_csv (path , index_col = [0 , 1 ])
508
+
491
509
# TODO to_csv drops column name
492
510
assert_frame_equal (tsframe , recons , check_names = False )
493
511
494
512
# do not load index
495
513
tsframe .to_csv (path )
496
- recons = DataFrame . from_csv (path , index_col = None )
514
+ recons = self . read_csv (path , index_col = None )
497
515
assert len (recons .columns ) == len (tsframe .columns ) + 2
498
516
499
517
# no index
500
518
tsframe .to_csv (path , index = False )
501
- recons = DataFrame . from_csv (path , index_col = None )
519
+ recons = self . read_csv (path , index_col = None )
502
520
assert_almost_equal (recons .values , self .tsframe .values )
503
521
504
- # needed if setUP becomes classmethod
522
+ # needed if setUp becomes class method
505
523
self .tsframe .index = old_index
506
524
507
525
with ensure_clean ('__tmp_to_csv_multiindex__' ) as path :
@@ -599,7 +617,8 @@ def _make_frame(names=None):
599
617
with ensure_clean ('__tmp_to_csv_multiindex__' ) as path :
600
618
# empty
601
619
tsframe [:0 ].to_csv (path )
602
- recons = DataFrame .from_csv (path )
620
+ recons = self .read_csv (path )
621
+
603
622
exp = tsframe [:0 ]
604
623
exp .index = []
605
624
@@ -624,7 +643,7 @@ def test_to_csv_withcommas(self):
624
643
625
644
with ensure_clean ('__tmp_to_csv_withcommas__.csv' ) as path :
626
645
df .to_csv (path )
627
- df2 = DataFrame . from_csv (path )
646
+ df2 = self . read_csv (path )
628
647
assert_frame_equal (df2 , df )
629
648
630
649
def test_to_csv_mixed (self ):
@@ -739,7 +758,7 @@ def test_to_csv_wide_frame_formatting(self):
739
758
740
759
def test_to_csv_bug (self ):
741
760
f1 = StringIO ('a,1.0\n b,2.0' )
742
- df = DataFrame . from_csv (f1 , header = None )
761
+ df = self . read_csv (f1 , header = None )
743
762
newdf = DataFrame ({'t' : df [df .columns [0 ]]})
744
763
745
764
with ensure_clean () as path :
0 commit comments