@@ -421,9 +421,11 @@ def from_tuples(cls, tuples, sortorder=None, names=None):
421
421
>>> tuples = [(1, 'red'), (1, 'blue'),
422
422
... (2, 'red'), (2, 'blue')]
423
423
>>> pd.MultiIndex.from_tuples(tuples, names=('number', 'color'))
424
- MultiIndex(levels=[[1, 2], ['blue', 'red']],
425
- codes=[[0, 0, 1, 1], [1, 0, 1, 0]],
426
- names=['number', 'color'])
424
+ MultiIndex([(1, 'red'),
425
+ (1, 'blue'),
426
+ (2, 'red'),
427
+ (2, 'blue')],
428
+ dtype='object', names=['number', 'color'])
427
429
"""
428
430
if not is_list_like (tuples ):
429
431
raise TypeError ('Input must be a list / sequence of tuple-likes.' )
@@ -478,9 +480,13 @@ def from_product(cls, iterables, sortorder=None, names=None):
478
480
>>> colors = ['green', 'purple']
479
481
>>> pd.MultiIndex.from_product([numbers, colors],
480
482
... names=['number', 'color'])
481
- MultiIndex(levels=[[0, 1, 2], ['green', 'purple']],
482
- codes=[[0, 0, 1, 1, 2, 2], [0, 1, 0, 1, 0, 1]],
483
- names=['number', 'color'])
483
+ MultiIndex([(0, 'green'),
484
+ (0, 'purple'),
485
+ (1, 'green'),
486
+ (1, 'purple'),
487
+ (2, 'green'),
488
+ (2, 'purple')],
489
+ dtype='object', names=['number', 'color'])
484
490
"""
485
491
from pandas .core .arrays .categorical import _factorize_from_iterables
486
492
from pandas .core .reshape .util import cartesian_product
@@ -664,6 +670,7 @@ def set_levels(self, levels, level=None, inplace=False,
664
670
>>> idx = pd.MultiIndex.from_tuples([(1, 'one'), (1, 'two'),
665
671
(2, 'one'), (2, 'two')],
666
672
names=['foo', 'bar'])
673
+ <<<<<<< HEAD
667
674
>>> idx.set_levels([['a','b'], [1,2]])
668
675
MultiIndex(levels=[['a', 'b'], [1, 2]],
669
676
codes=[[0, 0, 1, 1], [0, 1, 0, 1]],
@@ -680,6 +687,32 @@ def set_levels(self, levels, level=None, inplace=False,
680
687
MultiIndex(levels=[['a', 'b'], [1, 2]],
681
688
codes=[[0, 0, 1, 1], [0, 1, 0, 1]],
682
689
names=['foo', 'bar'])
690
+ =======
691
+ >>> idx.set_levels([['a', 'b'], [1, 2]])
692
+ MultiIndex([('a', 1),
693
+ ('a', 2),
694
+ ('b', 1),
695
+ ('b', 2)],
696
+ dtype='object', names=['foo', 'bar'])
697
+ >>> idx.set_levels(['a', 'b'], level=0)
698
+ MultiIndex([('a', 'one'),
699
+ ('a', 'two'),
700
+ ('b', 'one'),
701
+ ('b', 'two')],
702
+ dtype='object', names=['foo', 'bar'])
703
+ >>> idx.set_levels(['a', 'b'], level='bar')
704
+ MultiIndex([(1, 'a'),
705
+ (1, 'b'),
706
+ (2, 'a'),
707
+ (2, 'b')],
708
+ dtype='object', names=['foo', 'bar'])
709
+ >>> idx.set_levels([['a', 'b'], [1, 2]], level=[0, 1])
710
+ MultiIndex([('a', 1),
711
+ ('a', 2),
712
+ ('b', 1),
713
+ ('b', 2)],
714
+ dtype='object', names=['foo', 'bar'])
715
+ >>>>>>> Update doc string examples and docs
683
716
"""
684
717
if is_list_like (levels ) and not isinstance (levels , Index ):
685
718
levels = list (levels )
@@ -783,6 +816,7 @@ def set_codes(self, codes, level=None, inplace=False,
783
816
>>> idx = pd.MultiIndex.from_tuples([(1, 'one'), (1, 'two'),
784
817
(2, 'one'), (2, 'two')],
785
818
names=['foo', 'bar'])
819
+ <<<<<<< HEAD
786
820
>>> idx.set_codes([[1,0,1,0], [0,0,1,1]])
787
821
MultiIndex(levels=[[1, 2], ['one', 'two']],
788
822
codes=[[1, 0, 1, 0], [0, 0, 1, 1]],
@@ -799,6 +833,32 @@ def set_codes(self, codes, level=None, inplace=False,
799
833
MultiIndex(levels=[[1, 2], ['one', 'two']],
800
834
codes=[[1, 0, 1, 0], [0, 0, 1, 1]],
801
835
names=['foo', 'bar'])
836
+ =======
837
+ >>> idx.set_codes([[1, 0, 1, 0], [0, 0, 1, 1]])
838
+ MultiIndex([(2, 'one'),
839
+ (1, 'one'),
840
+ (2, 'two'),
841
+ (1, 'two')],
842
+ dtype='object', names=['foo', 'bar'])
843
+ >>> idx.set_codes([1, 0, 1, 0], level=0)
844
+ MultiIndex([(2, 'one'),
845
+ (1, 'two'),
846
+ (2, 'one'),
847
+ (1, 'two')],
848
+ dtype='object', names=['foo', 'bar'])
849
+ >>> idx.set_codes([0, 0, 1, 1], level='bar')
850
+ MultiIndex([(1, 'one'),
851
+ (1, 'one'),
852
+ (2, 'two'),
853
+ (2, 'two')],
854
+ dtype='object', names=['foo', 'bar'])
855
+ >>> idx.set_codes([[1, 0, 1, 0], [0, 0, 1, 1]], level=[0, 1])
856
+ MultiIndex([(2, 'one'),
857
+ (1, 'one'),
858
+ (2, 'two'),
859
+ (1, 'two')],
860
+ dtype='object', names=['foo', 'bar'])
861
+ >>>>>>> Update doc string examples and docs
802
862
"""
803
863
if level is not None and not is_list_like (level ):
804
864
if not is_list_like (codes ):
@@ -1547,9 +1607,19 @@ def to_hierarchical(self, n_repeat, n_shuffle=1):
1547
1607
>>> idx = pd.MultiIndex.from_tuples([(1, 'one'), (1, 'two'),
1548
1608
(2, 'one'), (2, 'two')])
1549
1609
>>> idx.to_hierarchical(3)
1550
- MultiIndex(levels=[[1, 2], ['one', 'two']],
1551
- codes=[[0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1],
1552
- [0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1]])
1610
+ MultiIndex([(1, 'one'),
1611
+ (1, 'one'),
1612
+ (1, 'one'),
1613
+ (1, 'two'),
1614
+ (1, 'two'),
1615
+ (1, 'two'),
1616
+ (2, 'one'),
1617
+ (2, 'one'),
1618
+ (2, 'one'),
1619
+ (2, 'two'),
1620
+ (2, 'two'),
1621
+ (2, 'two')],
1622
+ dtype='object')
1553
1623
"""
1554
1624
levels = self .levels
1555
1625
codes = [np .repeat (level_codes , n_repeat ) for
@@ -1640,16 +1710,21 @@ def _sort_levels_monotonic(self):
1640
1710
Examples
1641
1711
--------
1642
1712
1643
- >>> i = pd.MultiIndex(levels=[['a', 'b'], ['bb', 'aa']],
1644
- codes=[[0, 0, 1, 1], [0, 1, 0, 1]])
1645
- >>> i
1646
- MultiIndex(levels=[['a', 'b'], ['bb', 'aa']],
1647
- codes=[[0, 0, 1, 1], [0, 1, 0, 1]])
1648
-
1649
- >>> i.sort_monotonic()
1650
- MultiIndex(levels=[['a', 'b'], ['aa', 'bb']],
1651
- codes=[[0, 0, 1, 1], [1, 0, 1, 0]])
1713
+ >>> mi = pd.MultiIndex(levels=[['a', 'b'], ['bb', 'aa']],
1714
+ ... codes=[[0, 0, 1, 1], [0, 1, 0, 1]])
1715
+ >>> mi
1716
+ MultiIndex([('a', 'bb'),
1717
+ ('a', 'aa'),
1718
+ ('b', 'bb'),
1719
+ ('b', 'aa')],
1720
+ dtype='object')
1652
1721
1722
+ >>> mi.sort_values()
1723
+ MultiIndex([('a', 'aa'),
1724
+ ('a', 'bb'),
1725
+ ('b', 'aa'),
1726
+ ('b', 'bb')],
1727
+ dtype='object')
1653
1728
"""
1654
1729
1655
1730
if self .is_lexsorted () and self .is_monotonic :
@@ -1698,20 +1773,25 @@ def remove_unused_levels(self):
1698
1773
1699
1774
Examples
1700
1775
--------
1701
- >>> i = pd.MultiIndex.from_product([range(2), list('ab')])
1702
- MultiIndex(levels=[[0, 1], ['a', 'b']],
1703
- codes=[[0, 0, 1, 1], [0, 1, 0, 1]])
1776
+ >>> mi = pd.MultiIndex.from_product([range(2), list('ab')])
1777
+ >>> mi
1778
+ MultiIndex([(0, 'a'),
1779
+ (0, 'b'),
1780
+ (1, 'a'),
1781
+ (1, 'b')],
1782
+ dtype='object')
1704
1783
1705
- >>> i[2:]
1706
- MultiIndex(levels=[[0, 1], ['a', 'b']],
1707
- codes=[[1, 1], [0, 1]])
1784
+ >>> mi[2:]
1785
+ MultiIndex([(1, 'a'),
1786
+ (1, 'b')],
1787
+ dtype='object')
1708
1788
1709
1789
The 0 from the first level is not represented
1710
1790
and can be removed
1711
1791
1712
- >>> i [2:].remove_unused_levels()
1713
- MultiIndex(levels=[[1], ['a', 'b']],
1714
- codes=[[0, 0 ], [0, 1 ]])
1792
+ >>> mi2 = mi [2:].remove_unused_levels()
1793
+ >>> mi2.levels
1794
+ FrozenList([[1 ], ['a', 'b' ]])
1715
1795
"""
1716
1796
1717
1797
new_levels = []
@@ -2018,11 +2098,16 @@ def swaplevel(self, i=-2, j=-1):
2018
2098
>>> mi = pd.MultiIndex(levels=[['a', 'b'], ['bb', 'aa']],
2019
2099
... codes=[[0, 0, 1, 1], [0, 1, 0, 1]])
2020
2100
>>> mi
2021
- MultiIndex(levels=[['a', 'b'], ['bb', 'aa']],
2022
- codes=[[0, 0, 1, 1], [0, 1, 0, 1]])
2101
+ MultiIndex([('a', 'bb'),
2102
+ ('a', 'aa'),
2103
+ ('b', 'bb'),
2104
+ ('b', 'aa')],
2105
+ dtype='object')
2023
2106
>>> mi.swaplevel(0, 1)
2024
- MultiIndex(levels=[['bb', 'aa'], ['a', 'b']],
2025
- codes=[[0, 1, 0, 1], [0, 0, 1, 1]])
2107
+ MultiIndex([('bb', 'a'),
2108
+ ('aa', 'a'),
2109
+ ('bb', 'b'),
2110
+ ('aa', 'b')],
2026
2111
"""
2027
2112
new_levels = list (self .levels )
2028
2113
new_codes = list (self .codes )
0 commit comments