簡體   English   中英

在熊貓中刪除具有重復列的選定行

[英]Dropping selected rows in Pandas with duplicated columns

假設我有一個像這樣的數據框:

fname    lname     email

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

有沒有簡潔方便的方法來刪除{fname,lname}重復且電子郵件為空白的行?

您應該首先檢查您的“空”數據是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

您可以將firstgroupby一起使用(注意,請用np.nan替換為空,因為first將返回每列的第一個非null值)

df.replace('',np.nan).groupby(['fname','lname']).first().reset_index()
Out[20]: 
  fname  lname           email
0  Bill  Smith  some2@some.com
1   Joe  Aaron   some@some.com

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM