前面我们已经见过DataFrame的索引对象了,索引的作用是负责管理标签与其他元数据。
data={'index':[1,2,3,4,5],'year':[2012,2013,2014,2015,2016],'status':['good','very good','well','very well','wonderful']}
frame2=DataFrame(data,columns=['status','year','index'],index=['one','two','three','four','five'])
print frame.index
RangeIndex(start=0, stop=5, step=1)
默认的索引是从0开始递增1的自然数序列
下面介绍一下Index对象的方法与属性
方法 | 属性 |
---|---|
append | 链接另一个index对象,产生一个新的Index |
diff | 计算差集,并得到一个Index |
intersection | 计算交集 |
union | 计算并集 |
isin | 计算一个指示各值是否都包含在参数集合中的布尔型数组 |
delete | 产出索引i出的元素,并得到新的Index |
drop | 删除传入的值,并得到新的Index |
insert | 将元素插入到索引i处,并得到新的Index |
is_monotonic | 将各元素均大于等于前一个元素时,返回True |
is_unique | 将Index没有重复值时,返回True |
unique | 返回Index中唯一的数组 |
下面举一个例子
index1=pandas.Index(numpy.arange(5))
index2=pandas.Index(numpy.arange(7))
print index2.union(index1)
Int64Index([0, 1, 2, 3, 4, 5, 6], dtype='int64')
下面介绍一下重新索引与填充
obj=Series([4,5,5.5,8.46],index=['d','b','a','c'])
print obj.reindex(['a','b','c','d','e'])
print obj.reindex(['a','b','c','d','e'],fill_value=0)
a 5.50
b 5.00
c 8.46
d 4.00
e NaN
dtype: float64
a 5.50
b 5.00
c 8.46
d 4.00
e 0.00
dtype: float64
DataFrame可以通过index删除数据
print obj.drop('b')
d 4.00
a 5.50
c 8.46
dtype: float64
接下来总结一下DataFrame的索引选项
类型 | 说明 |
---|---|
obj[val] | 选取DataFrame的单个列或者一行列。在一些特殊情况下会比较便利:布尔型数组,切片,布尔型DataFrame |
obj.ix[val] | 选取单个行或者一组行 |
obj[:,val] | 选择单个列或者列子集 |
reindex | 重新索引 |
xs | 根据标签选取单行或者单列,返回一个Series |
icol,irow | 根据整数选取单行或者单列,返回一个Series |