【问题标题】:How to map the values based on other column in pandas?如何根据熊猫中的其他列映射值?
【发布时间】:2020-07-12 10:59:19
【问题描述】:

我需要在列中填充 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

【问题讨论】:

  • Level=0 对于Id 来说是唯一的吗?即每个Id 每个Id 是否只有一行?有没有Id 没有level=0 的情况?
  • 总有0级,总是第一级

标签: python pandas dataframe dictionary


【解决方案1】:

如果级别 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

【讨论】:

  • 谢谢。我没有那样想.. :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-21
  • 2018-04-26
  • 2013-08-30
  • 1970-01-01
  • 2020-11-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多