8、pandas 的 行、列重排序 reindex()

行、列重排序经常需要使用到。

现在有一个DataFrame:

数据源

现在DataFrame的索引是默认索引,从0开头的。之前的文章里,我讲过用set_index()将某一列设为索引。我就把‘序号’这一列设置为索引。

设置序列为索引

set_index()是重新设置一个索引。

而reindex()是将现有的行或者列调整顺序,这是两者的区别。

行重新排序
列重新排序

如果在新的索引名或者列名中,出现新的值,会发生添加新的行或者列,里面全是空值,而没有选中的行或者列就不会出现。

行列出现新值

所以如果在添加新行或列时,设置fill_value就可以将空值填充。

用fill_value填充空值

这里的reindex()可以给DataFrame添加新的行和列,之前讲过的loc[]也可以添加。但是reindex()需要将所有的行索引或者列名全部表示出来,所以便利性不如loc[]。但是如果添加行列较多,而且需要根据上下文填充空值的时候,reindex()就方便一些了。

数据源
空值索引
使用bfill函数填充
使用ffill函数

method='bfill'可以根据后面一个值进行填充,而method=’ffill'则是根据前面一个值进行填充。

bfill可以理解为‘back fill',  'ffill'可以理解为’front fill'。

但是这个参数使用有个条件:索引应该是升序或者降序的,如果索引顺序是乱的就会报错。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容