Pandas设置(set_index)与重置(reset_index)索引

1、将DataFrame中的列设置成索引:
DataFrame.set_index(keys, drop=True, append=False, inplace=False,verify_integrity=False)
*keys:接收list,指定要设置成索引的列;
*drop:默认为True,删除作为新索引的列,否则不删除;
*append:追加新的索引值,默认false不追加;
*inplace:是否修改原数据,默认false复制并修改新对象,true时修改原数据。
*verify_integrity:检查新索引是否有重复项。

2、重置索引,将索引变成列,并补上常规的数字索引:
DataFrame.reset_index(level=None, drop=False, inplace=False, col_level=0,col_fill=’’)
*level:int、str、tuple或list,默认为none,仅从索引中移除给定的级别。默认情况下删除所有级别。
*drop:bool,默认为false,索引列(被设置为索引的列)被还原为普通列,并将索引重置为整数索引,否则直接丢弃索引列。
*inplace:是否修改原数据,默认false复制并修改新对象,true时修改原数据。
*col_level:int或str,默认为0,如果列有多个级别,则确定将标签插入到哪个级别。默认情况下,它将插入第一个级别。
*col_fill:对象,默认值’’,如果列有多个级别,则确定其他级别的命名方式。如果没有,则重复索引名。

#创建数据
data = pd.DataFrame(data=[['bar','one','z','1'],
                          ['bar','two','v','2'],
                          ['foo','one','x','3'],
                          ['foo','two','w','4']])
out:
    0    1  2  3
0  bar  one  z  1
1  bar  two  v  2
2  foo  one  x  3
3  foo  two  w  4     

#强制修改列名                   
data.columns = ['a','b','c','d']
out:
     a    b  c  d
0  bar  one  z  1
1  bar  two  v  2
2  foo  one  x  3
3  foo  two  w  4

#将‘c列’设置为索引,并替换掉原来的数字索引
data.set_index('c')
out:
     a    b  d
c             
z  bar  one  1
v  bar  two  2
x  foo  one  3
w  foo  two  4

#将索引列重置为列
data.reset_index()
out:
     a    b  d
c             
z  bar  one  1
v  bar  two  2
x  foo  one  3
w  foo  two  4

#将‘c’列设置为索引,并以追加的方式添加为二级索引
data.set_index('c',append=True)
out:
       a    b  d
  c             
0 z  bar  one  1
1 v  bar  two  2
2 x  foo  one  3
3 w  foo  two  4

#将追加的二级索引(level为1)还原成列
data.reset_index(level=1)
out:
   c    a    b  d
0  z  bar  one  1
1  v  bar  two  2
2  x  foo  one  3
3  w  foo  two  4
#level默认none,将所有索引(包括初始数字索引)设置为列,并再次初始化一个新的数字索引。
data.reset_index()
out:
    level_0  c    a    b  d
0        0   z  bar  one  1
1        1   v  bar  two  2
2        2   x  foo  one  3
3        3   w  foo  two  4

你可能感兴趣的:(python)