有条件地根据另一列中的值在熊猫中填充空值

时间:2019-04-18 16:50:42

标签: pandas dataframe

如何根据另一列中的值在一行中填充空值。

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

3 个答案:

答案 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