如何用另一个匹配行的结果填充NaN?

时间:2019-01-29 19:50:47

标签: python pandas dataframe

我有一个格式的数据框

USER | ADDRESS | PURCHASE
1    | add 1   |  A
1    | NaN     |  B
2    | NaN     |  C
2    | add 2   |  D
3    | NaN     |  E

对于用户1,我想用添加1填充NaN行中的地址,并且我想对NaN行的用户2进行相同的操作。我不想分组,我想保留4行格式。只想填写NAN地址。对于没有匹配项的用户3,我想将其保留为NaN。

我尝试过按用户分组,但最终会填满所有内容并将所有内容放在一起,这不是我想要的

没有代码

我只想相应地为每个用户填写地址

2 个答案:

答案 0 :(得分:2)

我不确定分组的问题是什么,但是当您要“按组”填充缺失值时,您需要使用groupby

df['ADDRESS'] = df.groupby('USER').ADDRESS.apply(lambda x: x.ffill().bfill())

   USER ADDRESS PURCHASE
0   1   add 1   A
1   1   add 1   B
2   2   add 2   C
3   2   add 2   D
4   3   NaN     E

答案 1 :(得分:0)

df ['ADDRESS'] = np.where(df ['ADDRESS']。isnull()),df ['PURCHASE'],df ['ADDRESS'])