用NaN替换数据框值

时间:2020-08-20 15:07:26

标签: python pandas dataframe

我正在使用15行8列的pandas数据框,例如:

              A          B  ...          G          H
0      0.158979   0.187282  ...   0.330566   0.458748    
1      0.227254   0.273307  ...   0.489372   0.649698    
2      0.308775   0.351285  ...   0.621399   0.833404    
3      0.375850   0.444228  ...   0.759206   0.929980    
4      0.431860   0.507906  ...   0.850741   1.038544    
5      0.507219   0.596291  ...   0.980404   1.145819    
6      0.570170   0.676551  ...   1.094201   1.282077    
7      0.635122   0.750434  ...   1.155645   1.292930    
8      0.704220   0.824748  ...   1.261516   1.395316    
9      0.762619   0.887669  ...   1.337860   1.410864    
10     0.824553   0.968889  ...   1.407665   1.437886    
11     0.893413   1.045289  ...   1.519902   1.514017    
12     0.946757   1.109964  ...   1.561611   1.478634    
13     1.008294   1.174139  ...   1.596135   1.501220    
14     1.053086   1.227203  ...   1.624630   1.503892

省略了从C到F的列。

我想知道如何为每列找到最接近1的值。找到此值后,我想用NaN替换列中的其余值,但与上一行和下一行相对应的值除外。然后获得这样的数据框:

            A          B    ...          G          H
0           NaN        NaN  ...        NaN        NaN    
1           NaN        NaN  ...        NaN        NaN    
2           NaN        NaN  ...        NaN        NaN    
3           NaN        NaN  ...        NaN   0.929980    
4           NaN        NaN  ...   0.850741   1.038544    
5           NaN        NaN  ...   0.980404   1.145819    
6           NaN        NaN  ...   1.094201        NaN    
7           NaN        NaN  ...        NaN        NaN    
8           NaN        NaN  ...        NaN        NaN    
9           NaN   0.887669  ...        NaN        NaN    
10          NaN   0.968889  ...        NaN        NaN    
11          NaN   1.045289  ...        NaN        NaN    
12     0.946757        NaN  ...        NaN        NaN    
13     1.008294        NaN  ...        NaN        NaN    
14     1.053086        NaN  ...        NaN        NaN

有人对此建议吗? 预先感谢

1 个答案:

答案 0 :(得分:2)

您可以使用以下事实:最接近1的实际上是将df的min的{​​{1}}删除1。因此,请检查abs的位置,使用{{1 }}一次使用1,一次使用-1以获取下一行和上一行。在min中使用此蒙版。

shift