![](/img/trans.png)
[英]Filter duplicated rows based on selected columns and comparing with another dataframe in Pandas
[英]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
還是空字符串。 如果它們是混合的,則可能需要修改以下邏輯。
使用pd.DataFrame.sort_values
和pd.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
您可以將first
與groupby
一起使用(注意,請用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.