Python Pandas: 如何删除*正确*重复的行?

Python Pandas: How to drop the *correct* duplicate row?

我有一个 Pandas 数据框,看起来像:

ID, Customer, Status,  Score, Size
01, Cust-A,   NaN,     100,   A
01, Cust-A,   Valid,   100,   A
02, Cust-B,   Invalid, 80,    B
02, Cust-B,   Invalid, NaN,   B
03, Cust-C,   Valid,   95,    C
04, Cust-D,   Invalid, 76,    NaN
04, Cust-D,   NaN,     76,    NaN
...

以此类推

如何删除 正确的 行?

我想在 ID-01 的情况下删除第一行,在 ID-02 的情况下删除第二行,在 ID-04 的情况下我想保留第一行,因为它是更少的 NaN

一个选项是计算每个 ID 的缺失值总数,提取最小缺失值的索引(idxmin())并使用该索引对原始数据框进行子集化:

df.loc[df.groupby('ID', as_index=False).apply(lambda g: g.isnull().sum(axis=1).idxmin())]

#   ID  Customer     Status  Score  Size
#1  1     Cust-A      Valid  100.0     A
#2  2     Cust-B    Invalid   80.0     B
#4  3     Cust-C      Valid   95.0     C
#5  4     Cust-D    Invalid   76.0   NaN