首页 > 解决方案 > 在 Pandas 中删除具有重复列的选定行

问题描述

假设我有一个这样的数据框:

fname    lname     email

Joe      Aaron   
Joe      Aaron     some@some.com
Bill     Smith 
Bill     Smith
Bill     Smith     some2@some.com

是否有一种简洁方便的方法来删除 {fname, lname} 重复且电子邮件为空白的行?

标签: pythonpandas

解决方案


您应该首先检查您的“空”数据是NaN空字符串还是空字符串。如果它们是混合的,您可能需要修改以下逻辑。

如果空行是 NaN

使用pd.DataFrame.sort_valuespd.DataFrame.drop_duplicates

df = df.sort_values('email')\
       .drop_duplicates(['fname', 'lname'])

如果空行是字符串

如果您的空行是字符串,则需要ascending=False在排序时指定:

df = df.sort_values('email', ascending=False)\
       .drop_duplicates(['fname', 'lname'])

结果

print(df)

  fname  lname           email
4  Bill  Smith  some2@some.com
1   Joe  Aaron   some@some.com

推荐阅读