我有一个df,每个ID可以有单行/几行。如果它有多行,则只有一行填充有非NA值的列。有时所有行都是不适用。使用Oracle,我想查询非NA值是否存在,否则直接使用NA值。
df:
ID Category
1 NA
1 A
1 NA
2 B
2 NA
3 NA
4 C
我希望将以下内容作为最终结果df。
df:
ID Category
1 A
2 B
3 NA
4 C
我尝试使用where子句non-NA加入,但是省略了ID 3。
假设列类别中没有任何空值,对于此示例数据,您可以使用条件聚合:
select id,
coalesce(max(case when category <> 'NA' then category end), 'NA') category
from tablename
group by id
请参见demo。