我有一个熊猫数据框,看起来像:
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/