43 pandas Series分层索引切片选择(tcy)

iterables = [['a1', 'a2', 'a3'], ['aa1', 'aa2','aa3']]
index=pd.MultiIndex.from_product(iterables, names=['N1', 'N2'])
s = pd.Series(np.arange(9), index=index)

# 实例1.1:索引名,索引名list
s['a1'] , s.loc['a1'] #选择第1,2,3行数据
s[['a1','a2']]        #选择第1...6行数据

# 实例1.2:选取范围
s['a1':'a2'] #选择第1...6行数据
s[:,'aa1']   #0,3,6

s[('a1','aa1'):('a1','aa1')]#0 序列
s[('a1','aa1'):('a1','aa2')]#选择第1,2行数据

# 实例2.1:int索引,int索引list
s[2],s.iloc[2] #2 标量
s[[2,4]]       #选择3,5行数据

# 实例2.2:int索引范围
s[2:5] #2,3,4#选择第3,4,5行数据

# 实例3:bool数组
s[s<3] , s.loc[s<3] #选择第1,2,3行数据

# 实例4:属性选择
s.a1     #选择第1,2,3行数据
s.a1.aa1 #0 标量

# 实例6:get函数 参数为索引切片
s.get('a1')
s.get(['a1','a2']) #选择第1...6行数据
s.get(slice(0,2))
实例2.2:序列-整数索引
s=pd.Series(np.arange(3))
s[-1]#错误;不知是整数索引或是位置索引
s=pd.Series(np.arange(3),index=list('abc'))
s[-1]#2标量

为了保持良好的一致性,如轴索引含有索引器,那么根据整数进行数据选取的操作总是面向标签的,
这也包括用iloc进行切片s.iloc[:1]
如果需要可靠的,不考虑索引类型的,基于位置的索引,可以用obj.iat[],obj.iloc[]  

猜你喜欢

转载自blog.csdn.net/tcy23456/article/details/85927159