Python 如何基于pandas中的其他列映射值?
我需要在列中填写NaN值,但它应该基于其他列。我有这样的数据帧:Python 如何基于pandas中的其他列映射值?,python,pandas,dataframe,dictionary,Python,Pandas,Dataframe,Dictionary,我需要在列中填写NaN值,但它应该基于其他列。我有这样的数据帧: Id Level Country Gender Age Model 1 0 Uk M 20 BMW 1 1 Uk M
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
df
因此,在我的第二篇专栏文章中,有一些层次至少描述了不同的模型。我想用级别为0的值填充国家
性别
和年龄
列中的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始终是每个Id的第一个,则您可以使用with
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
如果级别0始终是每个Id的第一个,则您可以使用with
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
是否
Level=0
根据Id
是唯一的?i、 每个Id
每个Id
是否只有一行?是否存在Id
没有level=0
的情况?始终存在始终为第一级的级别0level=0
是每个Id
唯一的?i、 每个Id
每个Id
是否只有一行?是否存在Id
没有level=0
的情况?始终存在始终为第一级的级别0谢谢。我没有那样想……)谢谢我没有那样想……)