如何根据另一列的值替换一列的 NaN 值?

How to substitute NaN values of a column based on the values of another column?

我想根据列 Idx 的值替换列 Title 的 NaN 值。如果Idx等于1,则NaN必须代入0,如果Idx等于0,则NaN Title必须等于1.

Title   Idx
NaN     0
0       1
1       0
NaN     0
NaN     1

我试过这个:

df.loc[df['Title'].isnull(), 'Title'] = 0

但是当然它总是放0。我如何在这里添加条件?

您可以将任何系列或列传递给 fillna()。在这种情况下,您需要使用 Series 1 - df['Idx'] 填充缺失值以获得结果:

>>> df
   Title  Idx
0    NaN    0
1      0    1
2      1    0
3    NaN    0
4    NaN    1

>>> df['Title'] = df['Title'].fillna(1 - df['Idx'])
>>> df
   Title  Idx
0      1    0
1      0    1
2      1    0
3      1    0
4      0    1