Skip to main content
 首页 » 编程设计

python之在 pandas 的列匹配中替换另一个数据框中的 NaN 值的正确方法

2025年05月04日13jillzhang

我是 pandas 的新手,正在尝试用列值匹配的 df2 替换 df1 中的列值 (NaN)。并面临以下错误。

df1 
unique_col  |  Measure 
944537          NaN 
7811403         NaN  
8901242114307     1  
 
df2 
unique_col  |  Measure 
944537           18 
7811403          12  
8901242114307    17.5 
 
 
 
df1.loc[(df1.unique_col.isin(df2.unique_col) & 
                       df1.Measure.isnull()), ['Measure']] = df2[['Measure']] 

我有两个包含 300 万条记录的数据框,在执行以下操作时遇到以下错误:

ValueError: cannot reindex from a duplicate axis

请您参考如下方法:

轻松填充 nans 的方法是使用 fillna功能。在你的情况下,如果你有 dfs 作为(注意索引)

    unique_col      Measure 
0   944537          NaN 
1   7811403         NaN 
2   8901242114307   1.0 
 
 
    unique_col      Measure 
0   944537          18.0 
1   7811403         12.0 
2   8901242114307   17.5 

你可以简单地

>>> df.fillna(df2) 
 
 
    unique_col       Measure 
0   944537           18.0 
1   7811403          12.0 
2   8901242114307    1.0 

如果索引不与上面相同,可以设置相同并使用相同的函数

df = df.set_index('unique_col') 
df.fillna(df2.set_index('unique_col'))