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