如何根据熊猫中的其他列映射值?

时间:2020-03-31 19:20:09

标签: python pandas dataframe dictionary

我需要在列中填写NaN值,但它应基于其他列。我有这样的数据框:

df

Id             Level           Country       Gender          Age           Model
1               0                Uk            M             20             BMW
1               1                NaN           NaN           NaN            Audi
1               2                NaN           NaN           NaN            VW
2               0                US            F             50             BMW
3               0                UK            F             40             Audi

因此,在第二列中,至少描述了不同的模型。我想用级别0的值填充Country GenderAge列中的NaN值。因此,我想要的输出应如下所示:

Id             Level           Country       Gender          Age           Model
1               0                Uk            M             20             BMW
1               1                Uk            M             20             Audi
1               2                Uk            M             20             VW
2               0                US            F             50             BMW
3               0                UK            F             40             Audi

1 个答案:

答案 0 :(得分:2)

如果级别0始终是每个ID的第一个,则可以将groupby.transformfirstcombine_first一起使用来填充nan:

df_f = df.combine_first(df.groupby('Id')[['Country', 'Gender', 'Age']].transform('first'))
print (df_f)
    Age Country Gender  Id  Level Model
0  20.0      Uk      M   1      0   BMW
1  20.0      Uk      M   1      1  Audi
2  20.0      Uk      M   1      2    VW
3  50.0      US      F   2      0   BMW
4  40.0      UK      F   3      0  Audi