我有一个数据框
A B
10 20
20 25
30 0
35 40
45 0
60 70
我想用B中的下一行值替换B列中的0。 所以它将成为
A B
10 20
20 25
30 '35'
'35' 40
45 '60'
'60' 70
答案 0 :(得分:2)
您可以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
答案 1 :(得分: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')