首页 > 解决方案 > Pandas - 用另一列中的字符串填充 NaN

问题描述

我有 2 列(“姓氏”和“邮政编码”)。数据框已被过滤为仅包含重复的姓氏:

Surname | PostCode
Adams   | NaN
Adams   | NaN
Bryan   | NX203
Bryan   | NaN
Cormack | NaN
Cormack | NaN
Cormack | NZ233
Dylan   | NaN
Dylan   | NaN
Dylan   | NaN

其中一些根本没有邮政编码。然而,对于那些有的人,我想用任何东西来填补缺失的东西。例如,包含“Bryan”的第二行应该用 NX203 填充(就像上面的行一样)。同样,其他两个 Cormack 实例应填充 NZ233。

我不知道从哪里开始。我认为它必须是应用于每一行的python函数,但不确定如何开始/做什么。

标签: pythonpandas

解决方案


让我们试试groupby().transform()

df['PostCode'] = df.groupby('Surname').PostCode.transform('first')

输出:

   Surname PostCode
0    Adams      NaN
1    Adams      NaN
2    Bryan    NX203
3    Bryan    NX203
4  Cormack    NZ233
5  Cormack    NZ233
6  Cormack    NZ233
7    Dylan      NaN
8    Dylan      NaN
9    Dylan      NaN

推荐阅读