1 建立索引

import pandas as pd

# 创建DataFrame时指定索引
df = pd.DataFrame({
    'name':['n1','n2','n3'],
    'age':[24,25,29]
}, index=list('abc')) # 也可以使用index=['a','b','c']
df

# 读取文件时指定单列索引
pd.read_excel('stu_data.xlsx',index_col='学号')

# 读取文件时指定多列索引(不可以再使用名称了,需要使用索引位置值)
pd.read_excel('stu_data.xlsx',index_col=[0,1])

python es 创建索引 python 设置索引_python es 创建索引


python es 创建索引 python 设置索引_python es 创建索引_02


python es 创建索引 python 设置索引_多列_03

2.指定列为索引列

# df.set_index(
#     keys :被指定为索引的列名,复合索引用 list:格式提供
#     drop = True :建立索引后是否删除该列
#     append = False :是否在原索引基础上添加索引,默认是直接替换原索引
#     inplace = False :是否直接修改原数据框 ) !!!!由于测试,这里均不直接修改原数据表!!!!

df = pd.read_excel('stu_data.xlsx')

# 当我们已经生成DataFrame后,需要指定列为索引列 
# 指定一列为索引列
df.set_index(keys='学号')


# 指定多列为索引列
df.set_index(keys=['学号','性别'])


# 指定多列,不删除原数据列
df.set_index(keys=['学号','性别'],drop=False)

# 与原索引进行拼接索引
df.set_index(keys=['性别'],append=True)

python es 创建索引 python 设置索引_数据分析_04


python es 创建索引 python 设置索引_python es 创建索引_05


python es 创建索引 python 设置索引_数据分析_06


python es 创建索引 python 设置索引_数据分析_07

3.还原索引列

# 设置索引列
df = pd.read_excel('stu_data.xlsx')
df.set_index(keys='学号',inplace=True)
# 还原索引列
# df.reset_index(
# drop = False :是否将原索引直接删除,而不是还原为变量列
# inplace = False :是否直接修改原数据框
# )

df.reset_index()

python es 创建索引 python 设置索引_python es 创建索引_08

4.修改索引

df = pd.read_excel('stu_data.xlsx')
df = df.set_index('学号')
# 修改单行索引名称
df.index.name = 'sno'
df

df = pd.read_excel('stu_data.xlsx')
df = df.set_index(['学号','性别'])
# 修改单行索引名称
df.index.names = ['sno','sex'] # 可以设置为空None
df

# 修改索引值
df = pd.DataFrame({
    'name':['gz','sz','sh'],
    'money':[100,200,300]
},index=list("abc"))
df.index = ['A','B','D']
df

python es 创建索引 python 设置索引_pandas_09


python es 创建索引 python 设置索引_pandas_10


python es 创建索引 python 设置索引_python_11

5.更新索引

reindex 则可以使用数据框中不存在的数值建立索引,并据此扩充新索引值对应的索引行/列,同时进行缺失值填充操作。
df.reindex(
labels :类数组结构的数值,将按此数值重建索引,非必需
copy = True :建立新对象而不是直接更改原 df/series 缺失数据的处理方式
method :针对已经排序过的索引,确定数据单元格无数据时的填充方法,非必需
pad / ffill:用前面的有效数值填充
backfill / bfill:用后面的有效数值填充
nearest:使用最接近的数值逬行填充
fill_value = np.NaN :将缺失值用什么数值替代
limit = None :向前/向后填充时的最大步长
)

import pandas as pd
df = pd.DataFrame({
    'name':['zs','ls','ww'],
    'level':['vip1','vip2','pm']
})
# 更新索引:通过索引选择出原先有哪些对应的存入表中,如果原先表不存在索引则用NaN填充
# 不进行填充
df.reindex([0,1,3])

# 用前面的有效数值进行填充
df.reindex([0,1,2,3,4],method='ffill') 

# 指定数值进行填充
df.reindex([0,1,2,3,4,5],fill_value=5)

python es 创建索引 python 设置索引_python_12

python es 创建索引 python 设置索引_多列_13


python es 创建索引 python 设置索引_数据分析_14