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

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-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

关于python - Python Pandas:如何删除*正确*重复行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41948459/

10-11 07:45