1.Index
pandas的索引对象负责管理轴标签和其他元数据(比如轴名称等)。构建Series或DataFrame时,所用到的任何数组或其他序列的标签都会被转换成一个Index。Index对象不可修改,从而在多个数据结构之间安全共享。
1.2.Index属性
主要的Index对象 | 说明 |
Index | 最广泛的Index对象,将轴标签表示为一个由Python对象组成的NumPy数组 |
Int64Index | 针对整数的特殊Index |
MultiIndex | “层次化”索引对象,表示单个轴上的多层索引。可以看做由元组组成的数组 |
DatetimeIndex | 存储纳秒级时间戳(用NumPy的Datetime64类型表示) |
PeriodIndex | 针对Period数据(时间间隔)的特殊Index |
1.3Index函数
函数 | 说明 |
Index([x,y,...]) | 创建索引 |
append(Index) | 连接另一个Index对象,产生一个新的Index |
diff(Index) | 计算差集,产生一个新的Index |
intersection(Index) | 计算交集 |
union(Index) | 计算并集 |
isin(Index) | 检查是否存在与参数索引中,返回bool型数组 |
delete(i) | 删除索引i处元素,得到新的Index |
drop(str) | 删除传入的值,得到新Index |
insert(i,str) | 将元素插入到索引i处,得到新Index |
Index.is_monotonic | 属性:当各元素大于前一个元素时,返回true |
Index.is_unique | 属性:当Index没有重复值时,返回true |
Index.unique | 属性:计算Index中唯一值的数组 |
2.示例
-
# -*- coding: utf-8 -*-
-
"""
-
@author: 蔚蓝的天空Tom
-
Aim:Index属性和函数的示例
-
"""
-
-
import pandas
as pd
-
from pandas
import Series
-
from pandas
import DataFrame
-
-
if __name__==
'__main__':
-
s = pd.Series([
'a',
'b',
'c'], index=[
'No.1',
'No.2',
'No.3'])
-
ind1 = s.index
#将轴标签表示为一个由Python对象组成的NumPy数组
-
#Index(['No.1', 'No.2', 'No.3'], dtype='object')
-
-
#查看内容
-
ind1[
0]
#No.1
-
ind1[
1]
#No.2
-
ind1[
-1]
#No.3
-
s.index
is ind1
#True
-
'No.1'
in ind1
#True
-
-
s2 = pd.Series([
'a',
'b',
'c',
'd'], index=[
'No.1',
'No.2',
'No.3',
'No.4'])
-
ind2 = s2.index
-
#Index(['No.1', 'No.2', 'No.3', 'No.4'], dtype='object')
-
-
#difference 计算索引的差集
-
ret = ind1.difference(ind2)
#Index([], dtype='object')
-
ret = ind2.difference(ind1)
#Index(['No.4'], dtype='object')
-
-
#append(Indexs) #连接另一个Index对象,产生一个新的Index
-
ret = ind1.append(ind2)
-
#Index(['No.1', 'No.2', 'No.3', 'No.1', 'No.2', 'No.3', 'No.4'], dtype='object')
-
-
#intersection(Index) 计算交集
-
ret = ind1.intersection(ind2)
#Index(['No.1', 'No.2', 'No.3'], dtype='object')
-
-
#union(Index) 计算并集
-
ret = ind1.union(ind2)
#Index(['No.1', 'No.2', 'No.3', 'No.4'], dtype='object')
-
-
#isin(Index) 检查是否存在与参数索引中,返回bool型数组
-
ind1
#Index(['No.1', 'No.2', 'No.3'], dtype='object')
-
ind2
#Index(['No.1', 'No.2', 'No.3', 'No.4'], dtype='object')
-
ret = ind1.isin(ind2)
#[ True True True]
-
ret = ind2.isin(ind1)
#[ True True True False]
-
-
#delete(i) 删除索引i处元素,得到新的Index,不修改源index
-
ret = ind1.delete(
0)
#Index(['No.2', 'No.3'], dtype='object')
-
-
#drop(str) 删除传入的值,得到新Index,不修改源index
-
ret = ind1.drop(
'No.1')
#Index(['No.2', 'No.3'], dtype='object')
-
-
#insert(i,str) 将元素插入到索引i处,得到新Index,不修改源index
-
ret = ind1.insert(
0,
'XXX')
#Index(['XXX', 'No.1', 'No.2', 'No.3'], dtype='object')
-
-
#is_monotonic() 当各元素大于前一个元素时,返回true
-
ret = ind1.is_monotonic
#True
-
-
#is_unique() 当Index没有重复值时,返回true
-
ret = ind1.is_unique
#True 说明ind1中没有重复值
-
-
#unique 计算index中唯一值的数组,即去重后的index
-
ret = ind1.unique
-
#<bound method IndexOpsMixin.unique of Index(['No.1', 'No.2', 'No.3'], dtype='object')>
(end)