我需要在列中填写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
Gender
和Age
列中的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
答案 0 :(得分:2)
如果级别0始终是每个ID的第一个,则可以将groupby.transform
与first
和combine_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