龙空技术网

Python reindex详解

EE漫谈 217

前言:

而今姐妹们对“python数组替换nan值怎么用”大概比较关怀,朋友们都需要剖析一些“python数组替换nan值怎么用”的相关资讯。那么小编也在网上汇集了一些有关“python数组替换nan值怎么用””的相关文章,希望我们能喜欢,我们一起来学习一下吧!

首先介绍reindex,它的作用是创建一个新对象,新对象的数据符合新的索引。示例如下所示

从上图可以看出,使用reindex后,索引进行了重排。如果某个索引值不存在,就会引入缺失值:

如果不想使用缺失值,可以通过fill_value参数填充默认值,如下所示

同时也可以使用method选项,使用method时,可用的参数包括ffill(前向填充)和bfill(后向填充)。

在使用method选项时,你可能会发现ffill或bfill填充的值与预期的值不符,如下图所示:

本来认为'o'索引填充的值应该是3,但上面填充的却是4,这是为什么呢?

因为在reindex的括号内部使用method选项时:先按照索引的顺序排序好,然后再填充值,填充完成后再按照reindex里新索引的顺序进行排列。

因此obj先按照a,b,c,d,o的顺序排列好,d的值是4, o的值就被前向填充成4了。

同理,如果使用bfill参数,因为o后面没有值了,o的值就是NaN,而不是2。如下图所示

但是如果使用.ffill()或.bfill(),就能够达到我们想要的效果:填充值与前向/后项值相同。如下图所示:

同时需要注意的是,在使用method选项时,原数组里的索引必须是已经经过排序的,如果原索引是乱序的,会弹出如下错误

index must be monotonic increasing or decreasing

如下所示obj3的原索引未按顺序排列:

如果此时使用method选项,就会报错:

但使用.ffill()就不会有问题:

使用method方式是旧python的做法,新版python中推荐使用.ffill()方式。

通过reindex还可以选择特定的索引:

对于DataFrame,reindex可以修改行索引或列索引。如果只传递一个序列,则会修改行索引:

用columns关键字就可以重新索引列,如下所示

通过本文的学习,你是否学会了reindex的用法?

标签: #python数组替换nan值怎么用