关于Pandas库中reindex函数填充选项ffill和bfill的一个有趣的实验。

d
Out[9]: 
    同比     城市     环比
b1  120.7    beijing  101.5
b2  127.3   shanghai  101.2
b3  119.4  guangzhou  101.3
b4  140.9   shenzhen  102.0
b5  101.4   shenyang  100.1
 
 
d1=dd.index.insert(3,'c1')
 
d1
Out[24]: Index(['b1', 'b2', 'b3', 'c1', 'b4', 'b5'], dtype='object'
 
dd1=d.reindex(index=d1,columns=d.columns,method='ffill')
dd1
Out[27]: 
       同比         城市     环比
b1  120.7    beijing  101.5
b2  127.3   shanghai  101.2
b3  119.4  guangzhou  101.3
c1  101.4   shenyang  100.1
b4  140.9   shenzhen  102.0
b5  101.4   shenyang  100.1
 
dd2=d.reindex(index=d1,columns=d.columns,method='bfill')
 
dd2
Out[29]: 
       同比         城市     环比
b1  120.7    beijing  101.5
b2  127.3   shanghai  101.2
b3  119.4  guangzhou  101.3
c1    NaN        NaN    NaN
b4  140.9   shenzhen  102.0
b5  101.4   shenyang  100.1

自己在试验reindex的bfill和ffill选项时,觉得填充的内容很有意思。

如果像我代码里dd1那样进行ffill前向填充,c1位置上会选取最后一个位置b5上的元素来填充,而不是靠近它的b4;

而dd2选取后向填充时,则选取b5位置后的元素填充,b5位置为NaN的空行,则c1位置填充的内容也为空行。

觉得这个现象还蛮有意思,因为自己的脑海里会认为c1会选取就近的b3或者b4位置的元素来进行填充,但是实际上不是。

如果插入索引不在原有的索引的中间,那么插入的元素就跟其插入位置的前或者后的元素有关;但是要是元素插在了中间,那么应用填充选项时其内容给原有索引首位置或者尾位置的元素的值有关。

关于具体的reindex函数的用法,大家可以用自带的help函数查看下,里边的讲解和关于填充的示例也都很有意思。

不知道我说的对不对,欢迎大家一起来试验下。
 

转载于:https://my.oschina.net/ruisong/blog/888195

你可能感兴趣的:(关于Pandas库中reindex函数填充选项ffill和bfill的一个有趣的实验。)