【问题标题】:Replace NaN with existing value of the group将 NaN 替换为组的现有值
【发布时间】:2020-12-15 22:13:15
【问题描述】:
    Name     Value
0   AA        33
1   AA        24
2   BB        23
3   BB        NaN
4   CC        NaN
5   CC        23
6   CC        45

如何通过查看列Name 将这些NaN 替换为现有值?对于CC,我想获得最大值(但如果它太复杂,那么我可以使用2345)。预期输出:

    Name     Value
0   AA        33
1   AA        24
2   BB        23
3   BB        23
4   CC        45
5   CC        23
6   CC        45

谢谢!

【问题讨论】:

    标签: python-3.x pandas replace nan


    【解决方案1】:

    您可以先分组,然后用 max 然后 fillna 进行变换:

    df['Value'] = df['Value'].fillna(df.groupby("Name")['Value'].transform('max'))
    print(df)
    

      Name  Value
    0   AA   33.0
    1   AA   24.0
    2   BB   23.0
    3   BB   23.0
    4   CC   45.0
    5   CC   23.0
    6   CC   45.0
    

    【讨论】:

    • 太棒了!如果我想获得最小值,那么我只需将 max 更改为 min?
    • @AK88 没错..!!
    【解决方案2】:

    您还可以将lambdatransform 一起使用

    df["Value"] = df.groupby('Name').transform(lambda x:x.fillna(x.max()))
    df
      Name  Value
    0   AA   33.0
    1   AA   24.0
    2   BB   23.0
    3   BB   23.0
    4   CC   45.0
    5   CC   23.0
    6   CC   45.0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-16
      • 1970-01-01
      • 2021-12-08
      • 2018-09-23
      • 2019-05-10
      • 2019-03-21
      • 2022-01-24
      • 2013-03-12
      相关资源
      最近更新 更多