如何根据另一列中的值在一行中填充空值。
A B
0 5
1 NAN
1 6
0 NAN
如果B中的空值是0,则用于B中的空值,然后用先前的值填充。
A B
0 5
1 NAN
1 6
0 6
```
it want it to be like this
答案 0 :(得分:2)
numpy.where
+ isnull
+ ffill
df.assign(
B=np.where(df.A.eq(0) & df.B.isnull(), df.B.ffill(), df.B)
)
A B
0 0 5.0
1 1 NaN
2 1 6.0
3 0 6.0
答案 1 :(得分:1)
使用loc的另一种方式
df.loc[df['A'].eq(0), 'B'] = df['B'].ffill()
A B
0 0 5
1 1 NaN
2 1 6
3 0 6
答案 2 :(得分:1)
一种更快的方法(与之前的方法相比):
import pandas as pd
import numpy as np
df = pd.DataFrame({'A':[0,1,1,0], 'B':[5,np.nan,6,np.nan]})
df.B = np.where(df.A==0, df.B.ffill(), df.B)
您会得到:
A B
0 0 5.0
1 1 NaN
2 1 6.0
3 0 6.0