我想用另一列的值填充一列中的缺失值。
我读到循环遍历每一行将是非常糟糕的做法,并且最好一次性完成所有事情,但我无法找到如何使用fillna方法。
之前的数据
Day Cat1 Cat2
1 cat ant
2 dog elephant
3 cat giraf
4 NaN ant
之后的数据
Day Cat1 Cat2
1 cat ant
2 dog elephant
3 cat giraf
4 cat ant
答案 0 :(得分:1)
您可以使用fillna
并传递不带NaN
行的df,将索引设置为Cat2
,然后调用将执行查找的map
:
In [108]:
df['Cat1'] = df['Cat1'].fillna(df['Cat2'].map(df.dropna().set_index('Cat2')['Cat1']))
df
Out[108]:
Day Cat1 Cat2
0 1 cat ant
1 2 dog elephant
2 3 cat giraf
3 4 cat ant
所以在这里我删除NaN
行,并将索引设置为Cat2
,通过调用map
就可以查找Cat1 values where
Cat2`匹配
以下是map
:
In [112]:
df['Cat2'].map(df.dropna().set_index('Cat2')['Cat1'])
Out[112]:
0 cat
1 dog
2 cat
3 cat
Name: Cat2, dtype: object