簡體   English   中英

Pandas - 用另一列的字符串填充 NaN

[英]Pandas - fill NaN with string from another column

我有 2 列(“姓氏”和“郵政編碼”)。 dataframe 已過濾為僅包含重復的姓氏:

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 function 但不確定如何開始/做什么。

讓我們試試groupby().transform()

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

Output:

   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

另一種方式, groupby(), ffillbfill

df['PostCode'] =df.groupby('Surname').PostCode.apply(lambda x:x.ffill().bfill())



 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM