pandas索引
- 一、索引
- 1.1 建立索引
- 1.2 重置索引
- 1.3 索引类型
- 1.4 索引的属性
- 1.5 索引的操作
一、索引
1.1 建立索引
建立索引可以在数据读取加载中指定索引:
import pandas as pd
df = pd.read_excel('team.xlsx', index_col='name') # 将name列设置为索引
df.head()
效果如下:
如果在读取数据时没有设置索引,可以使用df.set_index()指定:
df = pd.read_excel('team.xlsx')
df.set_index('name', inplace=True)
如果需要,还可以设置两层索引:
df.set_index(['name', 'team']) # 设置两层索引
df.set_index([df.name.str[0], 'name']) # 将姓名的第一个字母和姓名设置为索引
以下为其他两个常用的操作:
df.set_index('team', drop=False) # 保留原列
df.set_index('team', append=True) # 保留原来的索引
1.2 重置索引
有时我们想取消已有的索引,可以使用df.reset_index(),它的操作与set_index相反。以下是一些常用的操作:
df.reset_index() # 清除索引
df.set_index('name').reset_index() # 相当于什么也没做
# year一级索引取消
df.set_index(['month', 'year']).reset_index(level=1)
df.reset_index(level='year') # 同上,使用层级索引名
1.3 索引类型
为了适应各种业务数据的处理,索引又针对各种类型数据定义了不同的索引类型。
数字索引共有以下几种:
1、RangeIndex(单调整数范围的不可变索引)。pd.RangeIndex(1,100,2);
2、Int64Index(64位整形索引)。pd.Int64Index([1, 2, 3, 4], name=‘num’);
3、UInt64Index:无符号整数索引。pd.UInt64Index([1, 2, 3, 4]);
4、Float64Index:64位浮点型索引。pd.Float64Index([1.2, 2.4, 4, 6])
1.4 索引的属性
以下方法可以查询索引的属性,同样使用与df.columns,因为他们都是index对象。
df.index.name # 名称
df.index.array # array数组
df.index.dtype # 数据类型
df.index.shape # 形状
df.index.size # 元素数量
df.index.values # array数组
1.5 索引的操作
以下是索引的常用操作,同样适用于df.columns。
df.index.astype('int64') # 转换类型
df.index.isin() # 是否存在
df.index.rename('number') # 修改索引名称
df.index.nunique() # 不重复值的数量
df.index.sort_values(ascending=False) # 倒序排序
df.index.map(lambda x:x+'_') # map函数处理
df.index.str.replace('_', '') # str替换
df.index.to_list() # 转换为列表
df.index.to_frame(index=False, name='a') # 转成DataFrame
df.index.to_series() # 转成series
df.index.unique() # 去重
df.index.value_counts() # 去重及计数
df.index.where(df.index=='a') # 筛选
df.index.max() # 最大值