pandas层级索引1

层级索引(hierarchical indexing)

下面创建一个Series, 在输入索引Index时,输入了由两个子list组成的list,第一个子list是外层索引,第二个list是内层索引。

示例代码:

import pandas as pd
import numpy as np

ser_obj = pd.Series(np.random.randn(12),index=[
                [‘a‘, ‘a‘, ‘a‘, ‘b‘, ‘b‘, ‘b‘, ‘c‘, ‘c‘, ‘c‘, ‘d‘, ‘d‘, ‘d‘],
                [0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2]
            ])
print(ser_obj)

运行结果:

a  0    0.099174
   1   -0.310414
   2   -0.558047
b  0    1.742445
   1    1.152924
   2   -0.725332
c  0   -0.150638
   1    0.251660
   2    0.063387
d  0    1.080605
   1    0.567547
   2   -0.154148
dtype: float64

MultiIndex索引对象

  • 打印这个Series的索引类型,显示是MultiIndex
  • 直接将索引打印出来,可以看到有lavels,和labels两个信息。lavels表示两个层级中分别有那些标签,labels是每个位置分别是什么标签。

示例代码:

print(type(ser_obj.index))
print(ser_obj.index)

运行结果:

<class ‘pandas.indexes.multi.MultiIndex‘>
MultiIndex(levels=[[‘a‘, ‘b‘, ‘c‘, ‘d‘], [0, 1, 2]],
           labels=[[0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3], [0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2]])

选取子集

  • 根据索引获取数据。因为现在有两层索引,当通过外层索引获取数据的时候,可以直接利用外层索引的标签来获取。
  • 当要通过内层索引获取数据的时候,在list中传入两个元素,前者是表示要选取的外层索引,后者表示要选取的内层索引。

1. 外层选取:

ser_obj[‘outer_label‘]

示例代码:

# 外层选取
print(ser_obj[‘c‘])

运行结果:

0   -1.362096
1    1.558091
2   -0.452313
dtype: float64

2. 内层选取:

ser_obj[:, ‘inner_label‘]

示例代码:

# 内层选取
print(ser_obj[:, 2])

运行结果:

a    0.826662
b    0.015426
c   -0.452313
d   -0.051063
dtype: float64

常用于分组操作、透视表的生成等

交换分层顺序

1. swaplevel()

.swaplevel( )交换内层与外层索引。

示例代码:

print(ser_obj.swaplevel())

运行结果:

0  a    0.099174
1  a   -0.310414
2  a   -0.558047
0  b    1.742445
1  b    1.152924
2  b   -0.725332
0  c   -0.150638
1  c    0.251660
2  c    0.063387
0  d    1.080605
1  d    0.567547
2  d   -0.154148
dtype: float64

交换并排序分层

sortlevel()

.sortlevel( )先对外层索引进行排序,再对内层索引进行排序,默认是升序。

示例代码:

# 交换并排序分层
print(ser_obj.swaplevel().sortlevel())

运行结果:

0  a    0.099174
   b    1.742445
   c   -0.150638
   d    1.080605
1  a   -0.310414
   b    1.152924
   c    0.251660
   d    0.567547
2  a   -0.558047
   b   -0.725332
   c    0.063387
   d   -0.154148
dtype: float64

原文地址:https://www.cnblogs.com/alexzhang92/p/9793556.html

时间: 2024-08-30 06:47:56

pandas层级索引1的相关文章

Pandas的函数应用、层级索引、统计计算

1.Pandas的函数应用 1.apply 和 applymap 1. 可直接使用NumPy的函数 示例代码: # Numpy ufunc 函数 df = pd.DataFrame(np.random.randn(5,4) - 1) print(df) print(np.abs(df)) 运行结果: 0 1 2 3 0 -0.062413 0.844813 -1.853721 -1.980717 1 -0.539628 -1.975173 -0.856597 -2.612406 2 -1.277

利用python进行数据分析——pandas与索引

1. pandas包括series.dataframe Series Series是一维的数组型对象. Series包含了索引index和值value.比如说: DataFrame DataFrame是矩阵的数组表. DataFrame既有行索引也有列索引,它可以被视为一个共享相同索引的Series的dict.比如说: 2. pandas的索引? 2.1 普通索引.切片索引 在这个对象中,索引可以表达为: 注意1:通过索引获取数据,如果获取一个值,不显示索引:如果获取多个值,显示索引. 注意2:

第十五节 pandas建立时间索引

import pandas as pd pd.options.display.max_rows = 10 # 设置显示行数 df1 = pd.read_csv(r'E:\anacondatest\PythonData\PM25\Beijing_2009_HourlyPM25_created20140709.csv', encoding='gbk') # 将数据转换成时间戳类型 pd.Timestamp(df1["Date(LST)"][0]) # 建立datetimeindex对象 d

pandas 数据索引与选取

我们对 DataFrame 进行选择,大抵从这三个层次考虑:行列.区域.单元格.其对应使用的方法如下:一. 行,列 --> df[]二. 区域   --> df.loc[], df.iloc[], df.ix[]三. 单元格 --> df.at[], df.iat[] 下面开始练习: import numpy as np import pandas as pd df = pd.DataFrame(np.random.randn(6,4), index=list('abcdef'), co

pandas.DataFrame 索引方法区别

有三种索引:ix,iloc,loc: 使用方法都是 __.ix[row, columns] 详细的见 pandas 文档. 需要注意的差别是: 1,ix方法 混合索引和位置下标(必须是整数),先考虑是否是在标签索引中,然后考虑是位置下标.如果是整数作为index,ix就按照索引标签选取.  loc方法按照标签,iloc方法按位置下标. 2,虽然都支持切片,单个选择也超出范围: 但是,单个赋值的时候,ix方法可以选择不再索引内的,类似字典的方式新建一个标签行或列. 一般情况最好明确使用标签还是位置

pandas重新索引

#重新索引会更改DataFrame的行标签和列标签.重新索引意味着符合数据以匹配特定轴上的一组给定的标签. #可以通过索引来实现多个操作 - #重新排序现有数据以匹配一组新的标签. #在没有标签数据的标签位置插入缺失值(NA)标记. #示例 import pandas as pd import numpy as np N=20 df = pd.DataFrame({ 'A': pd.date_range(start='2016-01-01',periods=N,freq='D'), 'x': n

pandas索引的数据查找、排序和去重小结

由于Pandas的索引比较复杂,常常在使用过程中容易搞混,所以整理一份关于索引的查找.排序.去重的总结文档. import pandas as pd import numpy as np #定义DataFrame dict={'a':[1,2,3],'b':[4,5,6],'c':[7,8,9]} df=pd.DataFrame(dict,index=['one','two','three']) df .dataframe tbody tr th:only-of-type { vertical-

pandas索引操作

pandas的索引操作可以快速的完成多种功能. import pandas as pd import numpy as np 1. 首先pandas创建DataFrame df_1 = pd.DataFrame([['Jack','M',40],['Tony','M',20],['Mary','F',30],['Bob','M',25]], columns=['name','gender','age']) #列表创建DataFrame print('------ df_1是: ------')

第五篇 pandas??

pandas含有使数据清洗和分析?作变得更快更简单的数据结构和操作?具.pandas经常和其它?具?同使?,如数值计算?具NumPy和SciPy,分析库statsmodels和scikit-learn,和数据可视化库matplotlib.pandas是基于NumPy数组构建的,特别是基于数组的函数和不使?for循环的数据处理. pandas与NumPy的不同:pandas采?了?量的NumPy编码?格,不同是pandas是专?为处理表格和混杂数据设计的.?NumPy更适合处理统?的数值数组数据.