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