Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何基于pandas中的其他列映射值?_Python_Pandas_Dataframe_Dictionary - Fatal编程技术网

Python 如何基于pandas中的其他列映射值?

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

我需要在列中填写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
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
的情况?始终存在始终为第一级的级别0
level=0
是每个
Id
唯一的?i、 每个
Id
每个
Id
是否只有一行?是否存在
Id
没有
level=0
的情况?始终存在始终为第一级的级别0谢谢。我没有那样想……)谢谢我没有那样想……)