@@ -381,9 +381,11 @@ def from_tuples(cls, tuples, sortorder=None, names=None):
381
381
>>> tuples = [(1, 'red'), (1, 'blue'),
382
382
... (2, 'red'), (2, 'blue')]
383
383
>>> pd.MultiIndex.from_tuples(tuples, names=('number', 'color'))
384
- MultiIndex(levels=[[1, 2], ['blue', 'red']],
385
- codes=[[0, 0, 1, 1], [1, 0, 1, 0]],
386
- names=['number', 'color'])
384
+ MultiIndex([(1, 'red'),
385
+ (1, 'blue'),
386
+ (2, 'red'),
387
+ (2, 'blue')],
388
+ dtype='object', names=['number', 'color'])
387
389
"""
388
390
if not is_list_like (tuples ):
389
391
raise TypeError ('Input must be a list / sequence of tuple-likes.' )
@@ -438,9 +440,13 @@ def from_product(cls, iterables, sortorder=None, names=None):
438
440
>>> colors = ['green', 'purple']
439
441
>>> pd.MultiIndex.from_product([numbers, colors],
440
442
... names=['number', 'color'])
441
- MultiIndex(levels=[[0, 1, 2], ['green', 'purple']],
442
- codes=[[0, 0, 1, 1, 2, 2], [0, 1, 0, 1, 0, 1]],
443
- names=['number', 'color'])
443
+ MultiIndex([(0, 'green'),
444
+ (0, 'purple'),
445
+ (1, 'green'),
446
+ (1, 'purple'),
447
+ (2, 'green'),
448
+ (2, 'purple')],
449
+ dtype='object', names=['number', 'color'])
444
450
"""
445
451
from pandas .core .arrays .categorical import _factorize_from_iterables
446
452
from pandas .core .reshape .util import cartesian_product
@@ -623,6 +629,7 @@ def set_levels(self, levels, level=None, inplace=False,
623
629
>>> idx = pd.MultiIndex.from_tuples([(1, 'one'), (1, 'two'),
624
630
(2, 'one'), (2, 'two')],
625
631
names=['foo', 'bar'])
632
+ <<<<<<< HEAD
626
633
>>> idx.set_levels([['a','b'], [1,2]])
627
634
MultiIndex(levels=[['a', 'b'], [1, 2]],
628
635
codes=[[0, 0, 1, 1], [0, 1, 0, 1]],
@@ -639,6 +646,32 @@ def set_levels(self, levels, level=None, inplace=False,
639
646
MultiIndex(levels=[['a', 'b'], [1, 2]],
640
647
codes=[[0, 0, 1, 1], [0, 1, 0, 1]],
641
648
names=['foo', 'bar'])
649
+ =======
650
+ >>> idx.set_levels([['a', 'b'], [1, 2]])
651
+ MultiIndex([('a', 1),
652
+ ('a', 2),
653
+ ('b', 1),
654
+ ('b', 2)],
655
+ dtype='object', names=['foo', 'bar'])
656
+ >>> idx.set_levels(['a', 'b'], level=0)
657
+ MultiIndex([('a', 'one'),
658
+ ('a', 'two'),
659
+ ('b', 'one'),
660
+ ('b', 'two')],
661
+ dtype='object', names=['foo', 'bar'])
662
+ >>> idx.set_levels(['a', 'b'], level='bar')
663
+ MultiIndex([(1, 'a'),
664
+ (1, 'b'),
665
+ (2, 'a'),
666
+ (2, 'b')],
667
+ dtype='object', names=['foo', 'bar'])
668
+ >>> idx.set_levels([['a', 'b'], [1, 2]], level=[0, 1])
669
+ MultiIndex([('a', 1),
670
+ ('a', 2),
671
+ ('b', 1),
672
+ ('b', 2)],
673
+ dtype='object', names=['foo', 'bar'])
674
+ >>>>>>> Update doc string examples and docs
642
675
"""
643
676
if is_list_like (levels ) and not isinstance (levels , Index ):
644
677
levels = list (levels )
@@ -742,6 +775,7 @@ def set_codes(self, codes, level=None, inplace=False,
742
775
>>> idx = pd.MultiIndex.from_tuples([(1, 'one'), (1, 'two'),
743
776
(2, 'one'), (2, 'two')],
744
777
names=['foo', 'bar'])
778
+ <<<<<<< HEAD
745
779
>>> idx.set_codes([[1,0,1,0], [0,0,1,1]])
746
780
MultiIndex(levels=[[1, 2], ['one', 'two']],
747
781
codes=[[1, 0, 1, 0], [0, 0, 1, 1]],
@@ -758,6 +792,32 @@ def set_codes(self, codes, level=None, inplace=False,
758
792
MultiIndex(levels=[[1, 2], ['one', 'two']],
759
793
codes=[[1, 0, 1, 0], [0, 0, 1, 1]],
760
794
names=['foo', 'bar'])
795
+ =======
796
+ >>> idx.set_codes([[1, 0, 1, 0], [0, 0, 1, 1]])
797
+ MultiIndex([(2, 'one'),
798
+ (1, 'one'),
799
+ (2, 'two'),
800
+ (1, 'two')],
801
+ dtype='object', names=['foo', 'bar'])
802
+ >>> idx.set_codes([1, 0, 1, 0], level=0)
803
+ MultiIndex([(2, 'one'),
804
+ (1, 'two'),
805
+ (2, 'one'),
806
+ (1, 'two')],
807
+ dtype='object', names=['foo', 'bar'])
808
+ >>> idx.set_codes([0, 0, 1, 1], level='bar')
809
+ MultiIndex([(1, 'one'),
810
+ (1, 'one'),
811
+ (2, 'two'),
812
+ (2, 'two')],
813
+ dtype='object', names=['foo', 'bar'])
814
+ >>> idx.set_codes([[1, 0, 1, 0], [0, 0, 1, 1]], level=[0, 1])
815
+ MultiIndex([(2, 'one'),
816
+ (1, 'one'),
817
+ (2, 'two'),
818
+ (1, 'two')],
819
+ dtype='object', names=['foo', 'bar'])
820
+ >>>>>>> Update doc string examples and docs
761
821
"""
762
822
if level is not None and not is_list_like (level ):
763
823
if not is_list_like (codes ):
@@ -1504,9 +1564,19 @@ def to_hierarchical(self, n_repeat, n_shuffle=1):
1504
1564
>>> idx = pd.MultiIndex.from_tuples([(1, 'one'), (1, 'two'),
1505
1565
(2, 'one'), (2, 'two')])
1506
1566
>>> idx.to_hierarchical(3)
1507
- MultiIndex(levels=[[1, 2], ['one', 'two']],
1508
- codes=[[0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1],
1509
- [0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1]])
1567
+ MultiIndex([(1, 'one'),
1568
+ (1, 'one'),
1569
+ (1, 'one'),
1570
+ (1, 'two'),
1571
+ (1, 'two'),
1572
+ (1, 'two'),
1573
+ (2, 'one'),
1574
+ (2, 'one'),
1575
+ (2, 'one'),
1576
+ (2, 'two'),
1577
+ (2, 'two'),
1578
+ (2, 'two')],
1579
+ dtype='object')
1510
1580
"""
1511
1581
levels = self .levels
1512
1582
codes = [np .repeat (level_codes , n_repeat ) for
@@ -1593,16 +1663,21 @@ def _sort_levels_monotonic(self):
1593
1663
Examples
1594
1664
--------
1595
1665
1596
- >>> i = pd.MultiIndex(levels=[['a', 'b'], ['bb', 'aa']],
1597
- codes=[[0, 0, 1, 1], [0, 1, 0, 1]])
1598
- >>> i
1599
- MultiIndex(levels=[['a', 'b'], ['bb', 'aa']],
1600
- codes=[[0, 0, 1, 1], [0, 1, 0, 1]])
1601
-
1602
- >>> i.sort_monotonic()
1603
- MultiIndex(levels=[['a', 'b'], ['aa', 'bb']],
1604
- codes=[[0, 0, 1, 1], [1, 0, 1, 0]])
1666
+ >>> mi = pd.MultiIndex(levels=[['a', 'b'], ['bb', 'aa']],
1667
+ ... codes=[[0, 0, 1, 1], [0, 1, 0, 1]])
1668
+ >>> mi
1669
+ MultiIndex([('a', 'bb'),
1670
+ ('a', 'aa'),
1671
+ ('b', 'bb'),
1672
+ ('b', 'aa')],
1673
+ dtype='object')
1605
1674
1675
+ >>> mi.sort_values()
1676
+ MultiIndex([('a', 'aa'),
1677
+ ('a', 'bb'),
1678
+ ('b', 'aa'),
1679
+ ('b', 'bb')],
1680
+ dtype='object')
1606
1681
"""
1607
1682
1608
1683
if self .is_lexsorted () and self .is_monotonic :
@@ -1651,20 +1726,25 @@ def remove_unused_levels(self):
1651
1726
1652
1727
Examples
1653
1728
--------
1654
- >>> i = pd.MultiIndex.from_product([range(2), list('ab')])
1655
- MultiIndex(levels=[[0, 1], ['a', 'b']],
1656
- codes=[[0, 0, 1, 1], [0, 1, 0, 1]])
1729
+ >>> mi = pd.MultiIndex.from_product([range(2), list('ab')])
1730
+ >>> mi
1731
+ MultiIndex([(0, 'a'),
1732
+ (0, 'b'),
1733
+ (1, 'a'),
1734
+ (1, 'b')],
1735
+ dtype='object')
1657
1736
1658
- >>> i[2:]
1659
- MultiIndex(levels=[[0, 1], ['a', 'b']],
1660
- codes=[[1, 1], [0, 1]])
1737
+ >>> mi[2:]
1738
+ MultiIndex([(1, 'a'),
1739
+ (1, 'b')],
1740
+ dtype='object')
1661
1741
1662
1742
The 0 from the first level is not represented
1663
1743
and can be removed
1664
1744
1665
- >>> i [2:].remove_unused_levels()
1666
- MultiIndex(levels=[[1], ['a', 'b']],
1667
- codes=[[0, 0 ], [0, 1 ]])
1745
+ >>> mi2 = mi [2:].remove_unused_levels()
1746
+ >>> mi2.levels
1747
+ FrozenList([[1 ], ['a', 'b' ]])
1668
1748
"""
1669
1749
1670
1750
new_levels = []
@@ -1970,11 +2050,16 @@ def swaplevel(self, i=-2, j=-1):
1970
2050
>>> mi = pd.MultiIndex(levels=[['a', 'b'], ['bb', 'aa']],
1971
2051
... codes=[[0, 0, 1, 1], [0, 1, 0, 1]])
1972
2052
>>> mi
1973
- MultiIndex(levels=[['a', 'b'], ['bb', 'aa']],
1974
- codes=[[0, 0, 1, 1], [0, 1, 0, 1]])
2053
+ MultiIndex([('a', 'bb'),
2054
+ ('a', 'aa'),
2055
+ ('b', 'bb'),
2056
+ ('b', 'aa')],
2057
+ dtype='object')
1975
2058
>>> mi.swaplevel(0, 1)
1976
- MultiIndex(levels=[['bb', 'aa'], ['a', 'b']],
1977
- codes=[[0, 1, 0, 1], [0, 0, 1, 1]])
2059
+ MultiIndex([('bb', 'a'),
2060
+ ('aa', 'a'),
2061
+ ('bb', 'b'),
2062
+ ('aa', 'b')],
1978
2063
"""
1979
2064
new_levels = list (self .levels )
1980
2065
new_codes = list (self .codes )
0 commit comments