添加行索引,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必须给出所有列表元素,哪怕你不想修改的部分,也要原样填充。
