python - Pandas - 用另一个具有相似列的非空行填充Na

python - Pandas - FillNa with another non null row having similar column

我想用另一列的值填充一列中的缺失值。

我读到循环遍历每一行是非常糟糕的做法,一次完成所有事情会更好,但我无法找到如何使用 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

您可以使用 fillna and pass the df without NaN rows, setting the index to Cat2 and then calling 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 它将查找 Cat1values whereCat2` 匹配项

这是 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