我有以下输入数据:

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

谢谢.

推荐答案

你可以试着用sort_value,然后我们用groupbylast

#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

Python相关问答推荐

_repr_html_实现自定义__getattr_时未显示

在Pandas DataFrame操作中用链接替换'方法的更有效方法

用Python解密Java加密文件

大小为M的第N位_计数(或人口计数)的公式

Python解析整数格式说明符的规则?

Godot:需要碰撞的对象的AdditionerBody2D或Area2D以及queue_free?

NumPy中条件嵌套for循环的向量化

如何使用Pandas DataFrame按日期和项目汇总计数作为列标题

Django admin Csrf令牌未设置

在matplotlib中删除子图之间的间隙_mosaic

启动带有参数的Python NTFS会导致文件路径混乱

Flask Jinja2如果语句总是计算为false&

Python—为什么我的代码返回一个TypeError

Tensorflow tokenizer问题.num_words到底做了什么?

在Django中重命名我的表后,旧表中的项目不会被移动或删除

如何在Django模板中显示串行化器错误

为什么在不先将包作为模块导入的情况下相对导入不起作用

PANDA:如何将多选列转换为索引/列

try 第二次训练新的JAX+Equinox模型时,具有多个元素的数组的真值不明确(&Q)

在极坐标中添加列总计行