numpy 在条件下填充NaN

q3aa0525  于 2022-11-29  发布在  其他
关注(0)|答案(1)|浏览(179)

我有以下输入数据:

df = pd.DataFrame({"ID" : [1, 1, 1, 2, 2, 2, 2],
                  "length" : [0.7, 0.7, 0.7, 0.8, 0.6, 0.6, 0.7],
                  "height" : [7, 9, np.nan, 4, 8, np.nan, 5]})
df

    ID  length  height
0   1   0.7     7
1   1   0.7     9
2   1   0.7     np.nan
3   2   0.8     4
4   2   0.6     8
5   2   0.6     np.nan
6   2   0.7     5

我希望能够填充NaN,如果一组"ID"都具有相同的"长度",则填充该组"ID"中的最大"高度",否则填充该组中对应于最大长度的"高度"。
所需输出:

ID  length  height
0   1   0.7     7
1   1   0.7     9
2   1   0.7     9
3   2   0.8     4
4   2   0.6     8
5   2   0.6     4
6   2   0.7     5
  • 谢谢-谢谢
o8x7eapl

o8x7eapl1#

你可以尝试用sort_value然后我们用groupby找到last

#last will find the last not NaN value

df.height.fillna(df.sort_values(['length','height']).groupby(['ID'])['height'].transform('last'),inplace=True)
df
Out[296]: 
   ID  length  height
0   1     0.7     7.0
1   1     0.7     9.0
2   1     0.7     9.0
3   2     0.8     4.0
4   2     0.6     8.0
5   2     0.6     4.0
6   2     0.7     5.0

相关问题