Python熊猫:如何删除*正确*重复行?
我有一个熊猫数据框,看起来像:Python熊猫:如何删除*正确*重复行?,python,pandas,data-cleaning,Python,Pandas,Data Cleaning,我有一个熊猫数据框,看起来像: 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, C
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
如果某些ID有相同数量的缺失值(或没有缺失值),该怎么办?我不知道,这是一个很好的一般性问题。在我正在清理的数据集中,没有任何东西都有值这样的条件。我所看到的是,当存在重复项时,有一行缺少一个或多个值,并且相同的列具有相同的值。但你的问题很好。