增加或重排:重新索引reindex
删除:drop
对于一个已经建好的DataFrame对象,想要调整它的列索引顺序。

使用.reindex(columns=)方法

同理,使用.reindex(index=)方法,可以调整它的行索引顺序。

总结:千万不要认为reindex仅仅是给索引改名,它是改变了key-values的关系,改变了整个DataFrame对象结构。
添加行索引,newdf=df.columns.insert(4,‘新增’)
这条语句的意思是,在df的行索引上插入一个新的索引,它执行完成后,newdf是一个index类型,并不是最终的DataFrame对象。
再次使用newd=df.reindex(columns=newdf)语句,才能完成索引重排,得到想要的DataFrame对象。
因为没有给新增的列提供数据,所以值为NaN,想要填充这些值,可以在reindex中添加参数fill_value
如果想要删除某列,使用.columns.delete()
#####总结,添加或删除行列索引分为两步骤,第一步准备新的索引名.columns.insert(delete)或者.index.insert(delete),第二步使用reindex重排,注意insert和delete的位置参数不能为自定义的索引名,只能使用默认的数字.
#####有没有删除更简单的方法呢,那就是使用.drop,这样参数能为自定义的索引名,更简单的添加方法似乎没有。
df.drop(columns=lab) 或者df.drop(lab,axis=1)
这里添加行索引后,又把列顺序给搞乱了,有点烦。
#####检查了一下执行顺序,发现一个疑问:
df.reindex(columns=['城市','同比','环比','定基'])
df.columns
明明使用reindex方法修改了columns,但是df.columns依然没有变化。
#####改名使用rename
前一章的疑惑,如何给指定的series行索引改名方法,以及DataFrame指定行列索引改名方法,也通过官方文档查询到了。
毕竟如果仅仅需要修改1,2个行列索引名,把全部的名字都重新赋值一次太麻烦了。
使用.rename({})形式,新名字与旧名字用:号隔开,单纯改名,不改变DataFrame对象结构。
rename优点在于只需要写出要改的标签,其余不动。
####批量改名
比如想把index标签0到4修改成10到14,虽然也可以用rename,但是代码写出来要一一对应,也比较麻烦。
更简单的方法是用.index属性,前一章已经提过.index事实上就是一个列表。
ls=list(range(10,15))
df.index=ls
还有一种方式,这个列子.index能够进行算术操作,index标签0到4修改成10到14,只需要原始.index+10
newindex=df.index+10
df.index=newindex
和rename比起来,缺点在于.index必须给出所有列表元素,哪怕你不想修改的部分,也要原样填充。