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