如何使用具有公共列值的其他行中的值替换 nan 值

how to replace nan value using the value of which from other rows with common column value

使用 B 列作为参考如何替换 NaN 值

>>> a
A   B  
1   1     
Nan 3     
1   1    
Nan 1
Nan 2      
5   3       
1   1    
2   2 

我想要这样的结果。

>> result 
A   B  
1   1     
5   3     
1   1    
1   1
2   2      
5   3       
1   1    
2   2   

我尝试在列 b 上进行合并,但无法弄清楚 b=a.groupby('B').reset_index() dfM = pd.merge(a,b,on='B', how ='left')

我们需要从 B 列中的值到 A 中的值的映射。

mapping = a.dropna().drop_duplicates().set_index("B")["A"]

看起来像这样

B
1    1.0
3    5.0
2    2.0
Name: A, dtype: float64

此时填充空值变得无关紧要了。我们可以只映射 B 以获得列 A

a["B"].map(mapping)

这给你

0    1.0
1    5.0
2    1.0
3    1.0
4    2.0
5    5.0
6    1.0
7    2.0
Name: B, dtype: float64

转换为 int 并在需要时使用它覆盖原始数据框中的列 A