## Pandas set_index&reset_index
df样例:
a b c d
0 bar one z 1.0
1 bar two y 2.0
2 foo one x 3.0
3 foo two w 4.0
#### 1、set_index(keys, drop=True, append=False, inplace=False, verify_integrity=False)
默认情况:
DataFrame.set_index(keys,drop=True,append=False,inplace=False,verify_integrity=False)
参数说明
keys 列标签(需要设置为索引的列)
drop 删除用作新索引的列
append 是否将列附加到现有索引
inplace 表示当前操作是否对原数据生效
verify_integrity 检查新索引的副本
备注:通常排序注意要将drop=false,否则少一列
##### 1.1、# 单索引:key='c'时
df1 = df.set_index('c')
a b d
c
z bar one 1.0
y bar two 2.0
x foo one 3.0
w foo two 4.0
##### 1.2、也可以手动指定多层索引
df.set_index([pd.Index([1,2,3,4,5,6,7]), 'c'])
##### 1.3、直接设置多层索引,默认drop=True时
df2 = data.set_index(['a', 'b'])
c d
a b
bar one z 1.0
two y 2.0
foo one x 3.0
two w 4.0
##### 1.4、索引计算
df.set_index([s, s**2]) # 二层索引是一层索引的幂
#### 2、reset_index 重置索引
默认情况:
reset_index(level=None, drop=False, inplace=False, col_level=0, col_fill=”)
参数说明:
level 数字,或者等于索引的名称都可以;如果索引有多个列,仅从索引中删除level指定的列;默认删除所有级别的索引
drop False 时,则索引列会被还原为普通列
inplace 布尔类型 是否修改原始数据
col_level: 如果列名(columns)有多个级别,决定被删除的索引将插入哪个级别,默认插入第一级(由上往下0,1,2...)
col_fill: 重置索引时被删除的索引只能插入一个级别,如果列名(columns)有多个级别,那么这个列的列名的其他级别如何命名就由col_fill决定,默认不做填充,如果传入None则用被删除的索引的名字填充
df.reset_index()
a b c d
0 bar one z 1.0
1 bar two y 2.0
2 foo one x 3.0
3 foo two w 4.0
其它参数设置可参照上述举一返三,不作赘述