Python 用另一列中的下一个值替换零

Python 用另一列中的下一个值替换零,python,pandas,Python,Pandas,我有一个数据框 A B 10 20 20 25 30 0 35 40 45 0 60 70 我想用A中的下一行值替换B列中的0。 因此,它将成为 A B 10 20 20 25 30 '35' '35' 40 45 '60' '60' 70 您可以shift并使用loc In [219]: df.loc[df.B == 0, 'B'] = df.A.shift(-1) In [220]: df Out[

我有一个数据框

 A    B
10   20
20   25
30    0
35    40
45    0
60    70
我想用A中的下一行值替换B列中的0。 因此,它将成为

  A     B
 10    20
 20    25
 30   '35'
'35'   40
 45   '60'
'60'   70

您可以
shift
并使用
loc

In [219]: df.loc[df.B == 0, 'B'] = df.A.shift(-1)

In [220]: df
Out[220]:
    A     B
0  10  20.0
1  20  25.0
2  30  35.0
3  35  40.0
4  45  60.0
5  60  70.0

在这里,我们可以将方法链与方法
.replace()
.fillna()
一起使用。当您有连续的零,并且默认使用最后的非零读数时,这将非常有效

import numpy as np
import pandas as pd

df.replace(0, np.nan).fillna(method='ffill')
如果您希望它只向前填充一次,则可以执行以下操作:

df.replace(0, np.nan).fillna(method='ffill', limit=1)
最后,如果可以进一步将这些方法链接到回填,那么应该从零读取开始

df.replace(0, np.nan).fillna(method='ffill').fillna(method='bfill')