pandas:用来自另一个数据帧的数据填充,基于相同的 ID

Rob*_*988 3 python dataframe pandas

df1 有缺失值:

df1=

    ID age 
    1  12 
    2  na
    3  23
    4  na
    5  na
    6  na 
Run Code Online (Sandbox Code Playgroud)

我还有另一个df

df2=

    ID age
    2   4
    4   5
    5   6 
    6   7
Run Code Online (Sandbox Code Playgroud)

我想要fillnadf1,使用df2,基于相同的ID

df1 (after fillna)=

    ID age 
    1  12 
    2  4
    3  23
    4  5
    5  6
    6  7
Run Code Online (Sandbox Code Playgroud)

Psi*_*dom 5

您可以ID为两个数据帧设置索引,然后使用fillna()填充缺失值的方法,同时匹配两个数据帧的索引:

df1.set_index("ID").age.fillna(df2.set_index("ID").age).reset_index()

#  ID   age
#0  1   12
#1  2   4
#2  3   23
#3  4   5
#4  5   6
#5  6   7
Run Code Online (Sandbox Code Playgroud)

另一个选项是, combine_first,它从第一个数据帧中获取值,如果不是null,则从第二个数据帧中获取值,索引和列匹配:

df1.set_index("ID").combine_first(df2.set_index("ID")).reset_index()

#  ID   age
#0  1   12.0
#1  2   4.0
#2  3   23.0
#3  4   5.0
#4  5   6.0
#5  6   7.0
Run Code Online (Sandbox Code Playgroud)