13
13
import pandas as pd
14
14
from pandas import DataFrame , MultiIndex , Series , compat
15
15
import pandas .core .common as com
16
- from pandas .tests .frame .common import TestData , _check_mixed_float
16
+ from pandas .tests .frame .common import _check_mixed_float
17
17
import pandas .util .testing as tm
18
18
from pandas .util .testing import (
19
19
assert_frame_equal , assert_numpy_array_equal , assert_series_equal )
@@ -207,7 +207,7 @@ def test_logical_with_nas(self):
207
207
assert_series_equal (result , expected )
208
208
209
209
210
- class TestDataFrameOperators (TestData ):
210
+ class TestDataFrameOperators (object ):
211
211
212
212
@pytest .mark .parametrize ('op' , [operator .add , operator .sub ,
213
213
operator .mul , operator .truediv ])
@@ -238,9 +238,9 @@ def test_operators_none_as_na(self, op):
238
238
('__ne__' , True )])
239
239
# TODO: not sure what's correct here.
240
240
@pytest .mark .filterwarnings ("ignore:elementwise:FutureWarning" )
241
- def test_logical_typeerror_with_non_valid (self , op , res ):
241
+ def test_logical_typeerror_with_non_valid (self , op , res , float_frame ):
242
242
# we are comparing floats vs a string
243
- result = getattr (self . frame , op )('foo' )
243
+ result = getattr (float_frame , op )('foo' )
244
244
assert bool (result .all ().all ()) is res
245
245
246
246
def test_binary_ops_align (self ):
@@ -318,16 +318,17 @@ def test_dti_tz_convert_to_utc(self):
318
318
exp = DataFrame ({'A' : [np .nan , 3 , np .nan ]}, index = base )
319
319
assert_frame_equal (df1 + df2 , exp )
320
320
321
- def test_combineFrame (self ):
322
- frame_copy = self .frame .reindex (self .frame .index [::2 ])
321
+ def test_combineFrame (self , float_frame , mixed_float_frame ,
322
+ mixed_int_frame ):
323
+ frame_copy = float_frame .reindex (float_frame .index [::2 ])
323
324
324
325
del frame_copy ['D' ]
325
326
frame_copy ['C' ][:5 ] = np .nan
326
327
327
- added = self . frame + frame_copy
328
+ added = float_frame + frame_copy
328
329
329
330
indexer = added ['A' ].dropna ().index
330
- exp = (self . frame ['A' ] * 2 ).copy ()
331
+ exp = (float_frame ['A' ] * 2 ).copy ()
331
332
332
333
tm .assert_series_equal (added ['A' ].dropna (), exp .loc [indexer ])
333
334
@@ -340,95 +341,94 @@ def test_combineFrame(self):
340
341
341
342
assert np .isnan (added ['D' ]).all ()
342
343
343
- self_added = self . frame + self . frame
344
- tm .assert_index_equal (self_added .index , self . frame .index )
344
+ self_added = float_frame + float_frame
345
+ tm .assert_index_equal (self_added .index , float_frame .index )
345
346
346
- added_rev = frame_copy + self . frame
347
+ added_rev = frame_copy + float_frame
347
348
assert np .isnan (added ['D' ]).all ()
348
349
assert np .isnan (added_rev ['D' ]).all ()
349
350
350
351
# corner cases
351
352
352
353
# empty
353
- plus_empty = self . frame + self . empty
354
+ plus_empty = float_frame + DataFrame ()
354
355
assert np .isnan (plus_empty .values ).all ()
355
356
356
- empty_plus = self . empty + self . frame
357
+ empty_plus = DataFrame () + float_frame
357
358
assert np .isnan (empty_plus .values ).all ()
358
359
359
- empty_empty = self . empty + self . empty
360
+ empty_empty = DataFrame () + DataFrame ()
360
361
assert empty_empty .empty
361
362
362
363
# out of order
363
- reverse = self . frame . reindex (columns = self . frame .columns [::- 1 ])
364
+ reverse = float_frame . reindex (columns = float_frame .columns [::- 1 ])
364
365
365
- assert_frame_equal (reverse + self . frame , self . frame * 2 )
366
+ assert_frame_equal (reverse + float_frame , float_frame * 2 )
366
367
367
368
# mix vs float64, upcast
368
- added = self . frame + self . mixed_float
369
+ added = float_frame + mixed_float_frame
369
370
_check_mixed_float (added , dtype = 'float64' )
370
- added = self . mixed_float + self . frame
371
+ added = mixed_float_frame + float_frame
371
372
_check_mixed_float (added , dtype = 'float64' )
372
373
373
374
# mix vs mix
374
- added = self .mixed_float + self .mixed_float2
375
- _check_mixed_float (added , dtype = dict (C = None ))
376
- added = self .mixed_float2 + self .mixed_float
375
+ added = mixed_float_frame + mixed_float_frame
377
376
_check_mixed_float (added , dtype = dict (C = None ))
378
377
379
378
# with int
380
- added = self . frame + self . mixed_int
379
+ added = float_frame + mixed_int_frame
381
380
_check_mixed_float (added , dtype = 'float64' )
382
381
383
- def test_combineSeries (self ):
382
+ def test_combineSeries (self , float_frame , mixed_float_frame ,
383
+ mixed_int_frame , datetime_frame ):
384
384
385
385
# Series
386
- series = self . frame . xs (self . frame .index [0 ])
386
+ series = float_frame . xs (float_frame .index [0 ])
387
387
388
- added = self . frame + series
388
+ added = float_frame + series
389
389
390
390
for key , s in compat .iteritems (added ):
391
- assert_series_equal (s , self . frame [key ] + series [key ])
391
+ assert_series_equal (s , float_frame [key ] + series [key ])
392
392
393
393
larger_series = series .to_dict ()
394
394
larger_series ['E' ] = 1
395
395
larger_series = Series (larger_series )
396
- larger_added = self . frame + larger_series
396
+ larger_added = float_frame + larger_series
397
397
398
- for key , s in compat .iteritems (self . frame ):
398
+ for key , s in compat .iteritems (float_frame ):
399
399
assert_series_equal (larger_added [key ], s + series [key ])
400
400
assert 'E' in larger_added
401
401
assert np .isnan (larger_added ['E' ]).all ()
402
402
403
403
# no upcast needed
404
- added = self . mixed_float + series
404
+ added = mixed_float_frame + series
405
405
_check_mixed_float (added )
406
406
407
407
# vs mix (upcast) as needed
408
- added = self . mixed_float + series .astype ('float32' )
408
+ added = mixed_float_frame + series .astype ('float32' )
409
409
_check_mixed_float (added , dtype = dict (C = None ))
410
- added = self . mixed_float + series .astype ('float16' )
410
+ added = mixed_float_frame + series .astype ('float16' )
411
411
_check_mixed_float (added , dtype = dict (C = None ))
412
412
413
413
# these raise with numexpr.....as we are adding an int64 to an
414
414
# uint64....weird vs int
415
415
416
- # added = self.mixed_int + (100*series).astype('int64')
416
+ # added = mixed_int_frame + (100*series).astype('int64')
417
417
# _check_mixed_int(added, dtype = dict(A = 'int64', B = 'float64', C =
418
418
# 'int64', D = 'int64'))
419
- # added = self.mixed_int + (100*series).astype('int32')
419
+ # added = mixed_int_frame + (100*series).astype('int32')
420
420
# _check_mixed_int(added, dtype = dict(A = 'int32', B = 'float64', C =
421
421
# 'int32', D = 'int64'))
422
422
423
423
# TimeSeries
424
- ts = self . tsframe ['A' ]
424
+ ts = datetime_frame ['A' ]
425
425
426
426
# 10890
427
427
# we no longer allow auto timeseries broadcasting
428
428
# and require explicit broadcasting
429
- added = self . tsframe .add (ts , axis = 'index' )
429
+ added = datetime_frame .add (ts , axis = 'index' )
430
430
431
- for key , col in compat .iteritems (self . tsframe ):
431
+ for key , col in compat .iteritems (datetime_frame ):
432
432
result = col + ts
433
433
assert_series_equal (added [key ], result , check_names = False )
434
434
assert added [key ].name == key
@@ -437,52 +437,52 @@ def test_combineSeries(self):
437
437
else :
438
438
assert result .name is None
439
439
440
- smaller_frame = self . tsframe [:- 5 ]
440
+ smaller_frame = datetime_frame [:- 5 ]
441
441
smaller_added = smaller_frame .add (ts , axis = 'index' )
442
442
443
- tm .assert_index_equal (smaller_added .index , self . tsframe .index )
443
+ tm .assert_index_equal (smaller_added .index , datetime_frame .index )
444
444
445
445
smaller_ts = ts [:- 5 ]
446
- smaller_added2 = self . tsframe .add (smaller_ts , axis = 'index' )
446
+ smaller_added2 = datetime_frame .add (smaller_ts , axis = 'index' )
447
447
assert_frame_equal (smaller_added , smaller_added2 )
448
448
449
449
# length 0, result is all-nan
450
- result = self . tsframe .add (ts [:0 ], axis = 'index' )
451
- expected = DataFrame (np .nan , index = self . tsframe .index ,
452
- columns = self . tsframe .columns )
450
+ result = datetime_frame .add (ts [:0 ], axis = 'index' )
451
+ expected = DataFrame (np .nan , index = datetime_frame .index ,
452
+ columns = datetime_frame .columns )
453
453
assert_frame_equal (result , expected )
454
454
455
455
# Frame is all-nan
456
- result = self . tsframe [:0 ].add (ts , axis = 'index' )
457
- expected = DataFrame (np .nan , index = self . tsframe .index ,
458
- columns = self . tsframe .columns )
456
+ result = datetime_frame [:0 ].add (ts , axis = 'index' )
457
+ expected = DataFrame (np .nan , index = datetime_frame .index ,
458
+ columns = datetime_frame .columns )
459
459
assert_frame_equal (result , expected )
460
460
461
461
# empty but with non-empty index
462
- frame = self . tsframe [:1 ].reindex (columns = [])
462
+ frame = datetime_frame [:1 ].reindex (columns = [])
463
463
result = frame .mul (ts , axis = 'index' )
464
464
assert len (result ) == len (ts )
465
465
466
- def test_combineFunc (self ):
467
- result = self . frame * 2
468
- tm .assert_numpy_array_equal (result .values , self . frame .values * 2 )
466
+ def test_combineFunc (self , float_frame , mixed_float_frame ):
467
+ result = float_frame * 2
468
+ tm .assert_numpy_array_equal (result .values , float_frame .values * 2 )
469
469
470
470
# vs mix
471
- result = self . mixed_float * 2
471
+ result = mixed_float_frame * 2
472
472
for c , s in compat .iteritems (result ):
473
473
tm .assert_numpy_array_equal (
474
- s .values , self . mixed_float [c ].values * 2 )
474
+ s .values , mixed_float_frame [c ].values * 2 )
475
475
_check_mixed_float (result , dtype = dict (C = None ))
476
476
477
- result = self . empty * 2
478
- assert result .index is self . empty .index
477
+ result = DataFrame () * 2
478
+ assert result .index . equals ( DataFrame () .index )
479
479
assert len (result .columns ) == 0
480
480
481
- def test_comparisons (self ):
481
+ def test_comparisons (self , simple_frame , float_frame ):
482
482
df1 = tm .makeTimeDataFrame ()
483
483
df2 = tm .makeTimeDataFrame ()
484
484
485
- row = self . simple .xs ('a' )
485
+ row = simple_frame .xs ('a' )
486
486
ndim_5 = np .ones (df1 .shape + (1 , 1 , 1 ))
487
487
488
488
def test_comp (func ):
@@ -493,17 +493,17 @@ def test_comp(func):
493
493
with pytest .raises (ValueError , match = 'dim must be <= 2' ):
494
494
func (df1 , ndim_5 )
495
495
496
- result2 = func (self . simple , row )
496
+ result2 = func (simple_frame , row )
497
497
tm .assert_numpy_array_equal (result2 .values ,
498
- func (self . simple .values , row .values ))
498
+ func (simple_frame .values , row .values ))
499
499
500
- result3 = func (self . frame , 0 )
500
+ result3 = func (float_frame , 0 )
501
501
tm .assert_numpy_array_equal (result3 .values ,
502
- func (self . frame .values , 0 ))
502
+ func (float_frame .values , 0 ))
503
503
504
504
msg = 'Can only compare identically-labeled DataFrame'
505
505
with pytest .raises (ValueError , match = msg ):
506
- func (self . simple , self . simple [:2 ])
506
+ func (simple_frame , simple_frame [:2 ])
507
507
508
508
test_comp (operator .eq )
509
509
test_comp (operator .ne )
@@ -599,9 +599,9 @@ def test_boolean_comparison(self):
599
599
with pytest .raises (ValueError , match = msg1d ):
600
600
result = df == tup
601
601
602
- def test_combine_generic (self ):
603
- df1 = self . frame
604
- df2 = self . frame . loc [self . frame .index [:- 5 ], ['A' , 'B' , 'C' ]]
602
+ def test_combine_generic (self , float_frame ):
603
+ df1 = float_frame
604
+ df2 = float_frame . loc [float_frame .index [:- 5 ], ['A' , 'B' , 'C' ]]
605
605
606
606
combined = df1 .combine (df2 , np .add )
607
607
combined2 = df2 .combine (df1 , np .add )
@@ -611,8 +611,8 @@ def test_combine_generic(self):
611
611
chunk = combined .loc [combined .index [:- 5 ], ['A' , 'B' , 'C' ]]
612
612
chunk2 = combined2 .loc [combined2 .index [:- 5 ], ['A' , 'B' , 'C' ]]
613
613
614
- exp = self . frame . loc [self . frame .index [:- 5 ],
615
- ['A' , 'B' , 'C' ]].reindex_like (chunk ) * 2
614
+ exp = float_frame . loc [float_frame .index [:- 5 ],
615
+ ['A' , 'B' , 'C' ]].reindex_like (chunk ) * 2
616
616
assert_frame_equal (chunk , exp )
617
617
assert_frame_equal (chunk2 , exp )
618
618
0 commit comments