Заполнение нулевых значений в пандах на основе значения в другом столбце условно - PullRequest
2 голосов
/ 18 апреля 2019

как заполнить нулевые значения в строке на основе значения в другом столбце.

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

Ответы [ 3 ]

2 голосов
/ 18 апреля 2019

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 голос
/ 18 апреля 2019

Более быстрый способ (по сравнению с предыдущими):

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
1 голос
/ 18 апреля 2019

Другой способ использования 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...