# 1)Series的分层索引MultiIndex
ser = df.groupby(['公司', '日期'])['收盘'].mean() 多维索引中,空白的意思是:使用上面的值
ser.unstack() unstack把二级索引变成列
# 日期 10-1-2019 10-2-2019 10-3-2019
# 公司
# BABA 165.150 165.77 169.48
# BIDU 102.000 102.62 104.32
# IQ 22.055 21.89 22.43
ser.reset_index()
# 公司 日期 收盘
# 0 BABA 10-1-2019 165.150
# 1 BABA 10-2-2019 165.770
# 2 BABA 10-3-2019 169.480
# 3 BIDU 10-1-2019 102.000
# 4 BIDU 10-2-2019 102.620
# 5 BIDU 10-3-2019 104.320
# 6 IQ 10-1-2019 22.055
# 7 IQ 10-2-2019 21.890
# 8 IQ 10-3-2019 22.430
# 2)Series有多层索引MultiIndex怎样筛选数据
ser.loc[('BIDU', '10-3-2019')] # 多层索引,可以用元组的形式筛选
ser.loc[:, '10-3-2019'] # 只对二级索引进行筛选
# 3)DataFrame的多层索引MultiIndex
df.set_index(['公司', '日期'], inplace=True)
# 4)DataFrame有多层索引怎样筛选数据
# 在选择数据时
# 元组(key1, key2)代表筛选多层索引,其中key1是索引第一级,key2是第二级,比如key1=JD,key2=10-3-2019
# 列表[key1, key2]代表同一层的多个KEY,其中key1和key2是并列的同级索引,比如key1=JD,key2=BIDU
stocks.loc[('BIDU', '10-3-2019'), '开盘']
stocks.loc[['BIDU', 'BABA'], :]
stocks.loc[(['BIDU', 'BABA'], '10-3-2019'), :]
stocks.loc[(['BIDU', 'BABA'], '10-3-2019'), '收盘']
stocks.loc[(['BIDU'], ['10-3-2019', '10-2-2019']), '收盘']
stocks.loc[(slice(None), ['10-3-2019', '10-2-2019']), '收盘']
# slice(None)代表筛选这一索引的所有内容
stocks.reset_index() # 将多级索引变成普通的列