@@ -1386,40 +1386,323 @@ def test_numpy_func_call(self):
1386
1386
for func in funcs :
1387
1387
getattr (np , func )(self .frame )
1388
1388
1389
- def test_where (self ):
1390
- data = [[1 , 2 ], [3 , 4 ]]
1389
+ def test_where_with_int_data (self ):
1390
+ # GH 17386
1391
+ data = [[1 , 1 ], [2 , 2 ], [3 , 3 ], [4 , 4 ], [0 , 0 ]]
1392
+ lower_bound = 2.5
1391
1393
1392
- sparse_df = SparseDataFrame (data )
1393
- result = sparse_df .where (sparse_df >= 2 )
1394
+ sparse = SparseDataFrame (data )
1395
+ result = sparse .where (sparse > lower_bound )
1394
1396
1395
- dense_df = DataFrame (data )
1396
- expected = dense_df .where (dense_df >= 2 )
1397
+ dense = DataFrame (data )
1398
+ dense_expected = dense .where (dense > lower_bound )
1399
+ sparse_expected = SparseDataFrame (dense_expected )
1397
1400
1398
- tm .assert_frame_equal (result , expected )
1401
+ tm .assert_frame_equal (result , dense_expected )
1402
+ tm .assert_sp_frame_equal (result , sparse_expected )
1399
1403
1400
- def test_where_with_zero_other (self ):
1401
- data = [[1 , 2 ], [3 , 4 ]]
1402
- other = 0
1404
+ def test_where_with_int_data_and_int_other (self ):
1405
+ # GH 17386
1406
+ data = [[1 , 1 ], [2 , 2 ], [3 , 3 ], [4 , 4 ], [0 , 0 ]]
1407
+ other = - 100
1408
+ lower_bound = 2.5
1403
1409
1404
- sparse_df = SparseDataFrame (data )
1405
- result = sparse_df .where (sparse_df >= 2 , other )
1410
+ sparse = SparseDataFrame (data )
1411
+ result = sparse .where (sparse > lower_bound , other )
1406
1412
1407
- dense_df = DataFrame (data )
1408
- expected = dense_df .where (dense_df >= 2 , other )
1413
+ dense = DataFrame (data )
1414
+ dense_expected = dense .where (dense > lower_bound , other )
1415
+ sparse_expected = SparseDataFrame (dense_expected ,
1416
+ default_fill_value = other )
1409
1417
1410
- tm .assert_frame_equal (result , expected )
1418
+ tm .assert_frame_equal (result , dense_expected )
1419
+ tm .assert_sp_frame_equal (result , sparse_expected )
1411
1420
1412
- def test_where_with_float_other (self ):
1413
- data = [[1 , 2 ], [3 , 4 ]]
1421
+ def test_where_with_int_data_and_float_other (self ):
1422
+ # GH 17386
1423
+ data = [[1 , 1 ], [2 , 2 ], [3 , 3 ], [4 , 4 ], [0 , 0 ]]
1414
1424
other = 0.1
1425
+ lower_bound = 2.5
1415
1426
1416
- sparse_df = SparseDataFrame (data )
1417
- result = sparse_df .where (sparse_df >= 2 , other )
1427
+ sparse = SparseDataFrame (data )
1428
+ result = sparse .where (sparse > lower_bound , other )
1418
1429
1419
- dense_df = DataFrame (data )
1420
- expected = dense_df .where (dense_df >= 2 , other )
1430
+ dense = DataFrame (data )
1431
+ dense_expected = dense .where (dense > lower_bound , other )
1432
+ sparse_expected = SparseDataFrame (dense_expected ,
1433
+ default_fill_value = other )
1421
1434
1422
- tm .assert_frame_equal (result , expected )
1435
+ tm .assert_frame_equal (result , dense_expected )
1436
+ tm .assert_sp_frame_equal (result , sparse_expected )
1437
+
1438
+ def test_where_with_int_data_and_complex_other (self ):
1439
+ # GH 17386
1440
+ data = [[1 , 1 ], [2 , 2 ], [3 , 3 ], [4 , 4 ], [0 , 0 ]]
1441
+ other = 100.0 + 100.0j
1442
+ lower_bound = 2.5
1443
+
1444
+ sparse = SparseDataFrame (data )
1445
+ result = sparse .where (sparse > lower_bound , other )
1446
+
1447
+ dense = DataFrame (data )
1448
+ dense_expected = dense .where (dense > lower_bound , other )
1449
+ sparse_expected = SparseDataFrame (dense_expected ,
1450
+ default_fill_value = other )
1451
+
1452
+ tm .assert_frame_equal (result , dense_expected )
1453
+ tm .assert_sp_frame_equal (result , sparse_expected )
1454
+
1455
+ def test_where_with_int_data_and_bool_other (self ):
1456
+ # GH 17386
1457
+ data = [[1 , 1 ], [2 , 2 ], [3 , 3 ], [4 , 4 ], [0 , 0 ]]
1458
+ other = True
1459
+ lower_bound = 2.5
1460
+
1461
+ sparse = SparseDataFrame (data )
1462
+ result = sparse .where (sparse > lower_bound , other )
1463
+
1464
+ dense = DataFrame (data )
1465
+ dense_expected = dense .where (dense > lower_bound , other )
1466
+ sparse_expected = SparseDataFrame (dense_expected ,
1467
+ default_fill_value = other )
1468
+
1469
+ tm .assert_frame_equal (result , dense_expected )
1470
+ tm .assert_sp_frame_equal (result , sparse_expected )
1471
+
1472
+ def test_where_with_float_data (self ):
1473
+ # GH 17386
1474
+ data = [[1.0 , 1.0 ], [2.0 , 2.0 ], [3.0 , 3.0 ], [4.0 , 4.0 ], [nan , nan ]]
1475
+ lower_bound = 2.5
1476
+
1477
+ sparse = SparseDataFrame (data )
1478
+ result = sparse .where (sparse > lower_bound )
1479
+
1480
+ dense = DataFrame (data )
1481
+ dense_expected = dense .where (dense > lower_bound )
1482
+ sparse_expected = SparseDataFrame (dense_expected )
1483
+
1484
+ tm .assert_frame_equal (result , dense_expected )
1485
+ tm .assert_sp_frame_equal (result , sparse_expected )
1486
+
1487
+ def test_where_with_float_data_and_int_other (self ):
1488
+ # GH 17386
1489
+ data = [[1.0 , 1.0 ], [2.0 , 2.0 ], [3.0 , 3.0 ], [4.0 , 4.0 ], [nan , nan ]]
1490
+ other = 0
1491
+ lower_bound = 2.5
1492
+
1493
+ sparse = SparseDataFrame (data )
1494
+ result = sparse .where (sparse > lower_bound , other )
1495
+
1496
+ dense = DataFrame (data )
1497
+ dense_expected = dense .where (dense > lower_bound , other )
1498
+ sparse_expected = SparseDataFrame (dense_expected ,
1499
+ default_fill_value = other )
1500
+
1501
+ tm .assert_frame_equal (result , dense_expected )
1502
+ tm .assert_sp_frame_equal (result , sparse_expected )
1503
+
1504
+ def test_where_with_float_data_and_float_other (self ):
1505
+ # GH 17386
1506
+ data = [[1.0 , 1.0 ], [2.0 , 2.0 ], [3.0 , 3.0 ], [4.0 , 4.0 ], [nan , nan ]]
1507
+ other = 0.1
1508
+ lower_bound = 2.5
1509
+
1510
+ sparse = SparseDataFrame (data )
1511
+ result = sparse .where (sparse > lower_bound , other )
1512
+
1513
+ dense = DataFrame (data )
1514
+ dense_expected = dense .where (dense > lower_bound , other )
1515
+ sparse_expected = SparseDataFrame (dense_expected ,
1516
+ default_fill_value = other )
1517
+
1518
+ tm .assert_frame_equal (result , dense_expected )
1519
+ tm .assert_sp_frame_equal (result , sparse_expected )
1520
+
1521
+ def test_where_with_float_data_and_complex_other (self ):
1522
+ # GH 17386
1523
+ data = [[1.0 , 1.0 ], [2.0 , 2.0 ], [3.0 , 3.0 ], [4.0 , 4.0 ], [nan , nan ]]
1524
+ other = 100.0 - 100j
1525
+ lower_bound = 2.5
1526
+
1527
+ sparse = SparseDataFrame (data )
1528
+ result = sparse .where (sparse > lower_bound , other )
1529
+
1530
+ dense = DataFrame (data )
1531
+ dense_expected = dense .where (dense > lower_bound , other )
1532
+ sparse_expected = SparseDataFrame (dense_expected ,
1533
+ default_fill_value = other )
1534
+
1535
+ tm .assert_frame_equal (result , dense_expected )
1536
+ tm .assert_sp_frame_equal (result , sparse_expected )
1537
+
1538
+ def test_where_with_float_data_and_bool_other (self ):
1539
+ # GH 17386
1540
+ data = [[1.0 , 1.0 ], [2.0 , 2.0 ], [3.0 , 3.0 ], [4.0 , 4.0 ], [nan , nan ]]
1541
+ other = True
1542
+ lower_bound = 2.5
1543
+
1544
+ sparse = SparseDataFrame (data )
1545
+ result = sparse .where (sparse > lower_bound , other )
1546
+
1547
+ dense = DataFrame (data )
1548
+ dense_expected = dense .where (dense > lower_bound , other )
1549
+ sparse_expected = SparseDataFrame (dense_expected ,
1550
+ default_fill_value = other )
1551
+
1552
+ tm .assert_frame_equal (result , dense_expected )
1553
+ tm .assert_sp_frame_equal (result , sparse_expected )
1554
+
1555
+ def test_where_with_complex_data (self ):
1556
+ # GH 17386
1557
+ data = [[1.0 , 1.0 + 1.0j ],
1558
+ [2.0 + 2.0j , 2.0 ],
1559
+ [3.0 , 3.0 + 3.0j ],
1560
+ [4.0 + 4.0j , 4.0 ],
1561
+ [nan , nan ]]
1562
+ lower_bound = 1.5
1563
+
1564
+ sparse = SparseDataFrame (data )
1565
+ result = sparse .where (sparse > lower_bound )
1566
+
1567
+ dense = DataFrame (data )
1568
+ dense_expected = dense .where (dense > lower_bound )
1569
+ sparse_expected = SparseDataFrame (dense_expected )
1570
+
1571
+ tm .assert_frame_equal (result , dense_expected )
1572
+ tm .assert_sp_frame_equal (result , sparse_expected )
1573
+
1574
+ def test_where_with_complex_data_and_int_other (self ):
1575
+ # GH 17386
1576
+ data = [[1.0 , 1.0 + 1.0j ],
1577
+ [2.0 + 2.0j , 2.0 ],
1578
+ [3.0 , 3.0 + 3.0j ],
1579
+ [4.0 + 4.0j , 4.0 ],
1580
+ [nan , nan ]]
1581
+ other = 0
1582
+ lower_bound = 1.5
1583
+
1584
+ sparse = SparseDataFrame (data )
1585
+ result = sparse .where (sparse > lower_bound , other )
1586
+
1587
+ dense = DataFrame (data )
1588
+ dense_expected = dense .where (dense > lower_bound , other )
1589
+ sparse_expected = SparseDataFrame (dense_expected ,
1590
+ default_fill_value = other )
1591
+
1592
+ tm .assert_frame_equal (result , dense_expected )
1593
+ tm .assert_sp_frame_equal (result , sparse_expected )
1594
+
1595
+ def test_where_with_complex_data_and_float_other (self ):
1596
+ # GH 17386
1597
+ data = [[1.0 , 1.0 + 1.0j ],
1598
+ [2.0 + 2.0j , 2.0 ],
1599
+ [3.0 , 3.0 + 3.0j ],
1600
+ [4.0 + 4.0j , 4.0 ],
1601
+ [nan , nan ]]
1602
+ other = 0.1
1603
+ lower_bound = 1.5
1604
+
1605
+ sparse = SparseDataFrame (data )
1606
+ result = sparse .where (sparse > lower_bound , other )
1607
+
1608
+ dense = DataFrame (data )
1609
+ dense_expected = dense .where (dense > lower_bound , other )
1610
+ sparse_expected = SparseDataFrame (dense_expected ,
1611
+ default_fill_value = other )
1612
+
1613
+ tm .assert_frame_equal (result , dense_expected )
1614
+ tm .assert_sp_frame_equal (result , sparse_expected )
1615
+
1616
+ def test_where_with_complex_data_and_complex_other (self ):
1617
+ # GH 17386
1618
+ data = [[1.0 , 1.0 + 1.0j ],
1619
+ [2.0 + 2.0j , 2.0 ],
1620
+ [3.0 , 3.0 + 3.0j ],
1621
+ [4.0 + 4.0j , 4.0 ],
1622
+ [nan , nan ]]
1623
+ other = 100.0 - 100.0j
1624
+ lower_bound = 1.5
1625
+
1626
+ sparse = SparseDataFrame (data )
1627
+ result = sparse .where (sparse > lower_bound , other )
1628
+
1629
+ dense = DataFrame (data )
1630
+ dense_expected = dense .where (dense > lower_bound , other )
1631
+ sparse_expected = SparseDataFrame (dense_expected ,
1632
+ default_fill_value = other )
1633
+
1634
+ tm .assert_frame_equal (result , dense_expected )
1635
+ tm .assert_sp_frame_equal (result , sparse_expected )
1636
+
1637
+ def test_where_with_complex_data_and_bool_other (self ):
1638
+ # GH 17386
1639
+ data = [[1.0 , 1.0 + 1.0j ],
1640
+ [2.0 + 2.0j , 2.0 ],
1641
+ [3.0 , 3.0 + 3.0j ],
1642
+ [4.0 + 4.0j , 4.0 ],
1643
+ [nan , nan ]]
1644
+ other = True
1645
+ lower_bound = 2.5
1646
+
1647
+ sparse = SparseDataFrame (data )
1648
+ result = sparse .where (sparse > lower_bound , other )
1649
+
1650
+ dense = DataFrame (data )
1651
+ dense_expected = dense .where (dense > lower_bound , other )
1652
+ sparse_expected = SparseDataFrame (dense_expected ,
1653
+ default_fill_value = other )
1654
+
1655
+ tm .assert_frame_equal (result , dense_expected )
1656
+ tm .assert_sp_frame_equal (result , sparse_expected )
1657
+
1658
+ def test_where_with_bool_data (self ):
1659
+ # GH 17386
1660
+ data = [[False , False ], [True , True ], [False , False ]]
1661
+ cond = True
1662
+
1663
+ sparse = SparseDataFrame (data )
1664
+ result = sparse .where (sparse == cond )
1665
+
1666
+ dense = DataFrame (data )
1667
+ dense_expected = dense .where (dense == cond )
1668
+ sparse_expected = SparseDataFrame (dense_expected )
1669
+
1670
+ tm .assert_frame_equal (result , dense_expected )
1671
+ tm .assert_sp_frame_equal (result , sparse_expected )
1672
+
1673
+ def test_where_with_bool_data_and_bool_other (self ):
1674
+ # GH 17386
1675
+ data = [[False , False ], [True , True ], [False , False ]]
1676
+ other = True
1677
+ cond = True
1678
+
1679
+ sparse = SparseDataFrame (data )
1680
+ result = sparse .where (sparse == cond , other )
1681
+
1682
+ dense = DataFrame (data )
1683
+ dense_expected = dense .where (dense == cond , other )
1684
+ sparse_expected = SparseDataFrame (dense_expected ,
1685
+ default_fill_value = other )
1686
+
1687
+ tm .assert_frame_equal (result , dense_expected )
1688
+ tm .assert_sp_frame_equal (result , sparse_expected )
1689
+
1690
+ def test_where_with_bool_data_and_complex_other (self ):
1691
+ # GH 17386
1692
+ data = [[False , False ], [True , True ], [False , False ]]
1693
+ other = 100.0 + 100.0j
1694
+ cond = True
1695
+
1696
+ sparse = SparseDataFrame (data )
1697
+ result = sparse .where (sparse == cond , other )
1698
+
1699
+ dense = DataFrame (data )
1700
+ dense_expected = dense .where (dense == cond , other )
1701
+ sparse_expected = SparseDataFrame (dense_expected ,
1702
+ default_fill_value = other )
1703
+
1704
+ tm .assert_frame_equal (result , dense_expected )
1705
+ tm .assert_sp_frame_equal (result , sparse_expected )
1423
1706
1424
1707
def test_quantile (self ):
1425
1708
data = [[1 , 1 ], [2 , 10 ], [3 , 100 ], [4 , 100 ]]
0 commit comments