# 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')
review_pandas_multiindex
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.