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')