pandas想要修改行名,有reset_index()、set_index()、reindex()和reindex_like()方法。使用得较多的是reset_index(),其作用是使index的范围是[0,df.shape[0]),如果不指定drop参数的话,那么原本的index会保留下来并且作为第一列,例如已经有一个DataFrame,其index编号从60到70(左闭右开),如下:
现在使用reset_index()方法对其操作:
myDf=myDf.reset_index()
结果如下:
可以看到不指定drop参数的reset_index()方法会将原来的index作为新表的第一列,原因是drop参数默认为False。如果指定drop参数为True,则原来的index便不会作为第一列出现在新表中了。如下:
myDf.reset_index(drop=True,inplace=True)
结果如下:
可以看到reset_index()如果指定drop=True的话则会删除原来的index。
现在,我们想要修改index为指定的范围,比如[990,999].我的想法是对DataFrame增加一列,这一列的值就是我们想要的范围,然后使用set_index()方法指定DataFrame的index,这样就可以得到指定范围的index了。代码如下:
myDf[myDf.shape[1]]=[v for v in range(990,1000)]
myDf.set_index(myDf.shape[1]-1,inplace=True)
结果如下:
可以看到,index变成了指定范围的数,只是index上面有一个数字10,其实那是修改过程中原本的列名.我们可以输出DataFrame的index看看:
myDf.index
结果如下:
可以看到index对象的name属性等于10.其实到这我们的目的已经达成了,但是如果看这个index.name不爽的话也可以直接对其进行赋值修改:
myDf.index.name=0
结果如下:
再打印myDf看看:
可以看到修改了index.name属性后显示在myDf的name也对应改变了。