Pandas_分层索引

# 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()                            # 将多级索引变成普通的列

posted @ 2022-03-08 16:44  aall_blue  阅读(85)  评论(0)    收藏  举报