Python / Pandas - drop_duplicates选择最完整的行

时间:2017-09-09 16:42:16

标签: python pandas

我有一个包含人员信息的数据框。然而,有时这些人会重复,有些行的信息比其他人更多。有没有办法使用列'名称'删除重复项?作为参考,但只保留最多的行?

1 个答案:

答案 0 :(得分:2)

如果你有像

这样的数据框
df = pd.DataFrame([['a',np.nan,np.nan,'M'],['a',12,np.nan,'M'],['c',np.nan,np.nan,'M'],['d',np.nan,np.nan,'M']],columns=['Name','Age','Region','Gender'])

根据nan计数对行进行排序,并使用子集' Name'删除重复项。保留第一个可能会有帮助,即

df['count'] = pd.isnull(df).sum(1)
df= df.sort_values(['count']).drop_duplicates(subset=['Name'],keep='first').drop('count',1)

输出:

在:

  Name   Age  Region Gender  
0    a   NaN     NaN      M  
1    a  12.0     NaN      M  
2    c   NaN     NaN      M  
3    d   NaN     NaN      M  

后:

Name   Age  Region Gender
1    a  12.0     NaN      M
2    c   NaN     NaN      M
3    d   NaN     NaN      M