review_pandas_multiindex


# stack
# unstack

col = ['a', 'b']
>>> ind = ['one', 'two']
>>> data = [[1, 2], [1, 2]]
>>> import pandas as pd
>>> df = pd.DataFrame(data, index=ind, columns=col)
>>> df.shape
(2, 2)
>>> df
     a  b
one  1  2
two  1  2
>>> df.index
Index(['one', 'two'], dtype='object')

>>> df.stack()
one  a    1
     b    2
two  a    1
     b    2
dtype: int64

>>> df.unstack()
a  one    1
   two    1
b  one    2
   two    2
dtype: int64

>>> df.index
Index(['one', 'two'], dtype='object')

>>> df.stack().index
MultiIndex(levels=[['one', 'two'], ['a', 'b']],
           labels=[[0, 0, 1, 1], [0, 1, 0, 1]])

>>> df.unstack().index
MultiIndex(levels=[['a', 'b'], ['one', 'two']],
           labels=[[0, 0, 1, 1], [0, 1, 0, 1]])


# Multiindex
>>> df['rank'] = ['first', 'second']
>>> df
     a  b    rank
one  1  2   first
two  1  2  second

>>> pd.MultiIndex.from_tuples(list(zip(*[df.index, df['rank']])))
MultiIndex(levels=[['one', 'two'], ['first', 'second']],
           labels=[[0, 1], [0, 1]])

>>> df.index = pd.MultiIndex.from_tuples(list(zip(*[df.index, df['rank']])))

>>> df
            a  b    rank
one first   1  2   first
two second  1  2  second

>>> df.unstack()
        a            b          rank        
    first second first second  first  second
one   1.0    NaN   2.0    NaN  first     NaN
two   NaN    1.0   NaN    2.0    NaN  second

>>> df.unstack(0)
          a         b        rank        
        one  two  one  two    one     two
first   1.0  NaN  2.0  NaN  first     NaN
second  NaN  1.0  NaN  2.0    NaN  second

# 獲取Multiindex的值
>>> df.index.get_level_values(-1)
Index(['first', 'second'], dtype='object')

>>> df.index.get_level_values(-2)
Index(['one', 'two'], dtype='object')

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章