首页 > 解决方案 > 删除重复行,但前提是列等于 NaN

问题描述

我只想删除两列(ID,代码)重复的行,但第三列(描述)等于'NaN'。我的数据框 df (如下所示)反映了我的初始数据框,而 df2 是我想要的。

df:

ID    Descrip    Code
1     NaN        CC
1     3          SS
2     4          CC
2     7          SS
3     NaN        CC
3     1          CC
3     NaN        SS
4     20         CC
4     22         SS
5     15         CC
5     10         SS
6     100        CC
6     NaN        CC
6     4          SS
6     NaN        SS


df2:

ID    Descrip    Code
1     NaN        CC
1     3          SS
2     4          CC
2     7          SS
3     1          CC
3     NaN        SS
4     20         CC
4     22         SS
5     15         CC
5     10         SS
6     100        CC
6     4          SS

我知道使用 df.drop(subset['ID', 'Code'], keep='first') 会删除重复的行,但我只想要'Decrip' == 'NaN'。

标签: pythondataframe

解决方案


您可以使用groupby并取最大值(每个数字都大于 NaN):

df2 = df.groupby(["ID", "Code"])["Descrip"].max().reset_index()

推荐阅读