多层索引可以切片,但是:
1.外层标签必须是经过排序的;
2.每个索引的外层标签第一个字母必须得一致,要么全是大写,要么全是小写
Series_123=pd.Series(np.random.randint(10),index=[['apple','apple','apple','apricot','apricot','apricot','banana','banana','blackberry','cherry'],[3,2,5,6,0,4,9,11,21,17]])
Series_123['apple':'banana']
Out[17]:
apple 3 6
2 6
5 6
apricot 6 6
0 6
4 6
banana 9 6
11 6
dtype: int64
Series_67=pd.Series(np.random.randint(10),index=[['apple','apple','apple','apricot','apricot','apricot','banana','banana','blackberry','cherry'],[3,2,5,6,5,4,9,5,21,17]])
Series_67
Out[19]:
apple 3 1
2 1
5 1
apricot 6 1
5 1
4 1
banana 9 1
5 1
blackberry 21 1
cherry 17 1
dtype: int64
Series_67[:,5]
Out[20]:
apple 1
apricot 1
banana 1
dtype: int64
Series_67['apple',5]
Out[21]: 1
unstact()其中默认为level=-1Series_67.unstack()
Out[22]:
2 3 4 5 6 9 17 21
apple 1.0 1.0 NaN 1.0 NaN NaN NaN NaN
apricot NaN NaN 1.0 1.0 1.0 NaN NaN NaN
banana NaN NaN NaN 1.0 NaN 1.0 NaN NaN
blackberry NaN NaN NaN NaN NaN NaN NaN 1.0
cherry NaN NaN NaN NaN NaN NaN 1.0 NaN
Series的内层索引变化为列标签,外层索引转换为行标签,并且删除重复索引,保证了索引的唯一性。
当leve=0时
Series_67.unstack(0)
Out[23]:
apple apricot banana blackberry cherry
2 1.0 NaN NaN NaN NaN
3 1.0 NaN NaN NaN NaN
4 NaN 1.0 NaN NaN NaN
5 1.0 1.0 1.0 NaN NaN
6 NaN 1.0 NaN NaN NaN
9 NaN NaN 1.0 NaN