как заполнить нулевые значения в строке на основе значения в другом столбце.
A B 0 5 1 NAN 1 6 0 NAN
для нулевого значения в B, если coressponding значение в A равно 0, затем заполните предыдущее значение.
A B 0 5 1 NAN 1 6 0 6 ``` it want it to be like this
numpy.where + isnull + ffill
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
Более быстрый способ (по сравнению с предыдущими):
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)
и вы получите:
Другой способ использования 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