用组的现有值替换NaN

时间:2020-08-27 04:06:40

标签: python-3.x pandas replace nan

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

如何通过查看列NaN用现有值替换这些Name?对于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

谢谢!

2 个答案:

答案 0 :(得分:3)

您可以分组并使用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

答案 1 :(得分:1)

您还可以将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