龙空技术网

如何用Python的pandas库根据指定列删除重复的行

半农半X的X 116

前言:

眼前我们对“dataframe去重复行”可能比较着重,我们都想要剖析一些“dataframe去重复行”的相关内容。那么小编在网摘上收集了一些对于“dataframe去重复行””的相关知识,希望看官们能喜欢,同学们一起来了解一下吧!

DataFrame customers+-------------+--------+| Column Name | Type   |+-------------+--------+| customer_id | int    || name        | object || email       | object |+-------------+--------+

在 DataFrame 中基于 email 列存在一些重复行。

编写一个解决方案,删除这些重复行,仅保留第一次出现的行。

返回结果格式如下例所示。

示例 1:

输入:+-------------+---------+---------------------+| customer_id | name    | email               |+-------------+---------+---------------------+| 1           | Ella    | emily@example.com   || 2           | David   | michael@example.com || 3           | Zachary | sarah@example.com   || 4           | Alice   | john@example.com    || 5           | Finn    | john@example.com    || 6           | Violet  | alice@example.com   |+-------------+---------+---------------------+输出:+-------------+---------+---------------------+| customer_id | name    | email               |+-------------+---------+---------------------+| 1           | Ella    | emily@example.com   || 2           | David   | michael@example.com || 3           | Zachary | sarah@example.com   || 4           | Alice   | john@example.com    || 6           | Violet  | alice@example.com   |+-------------+---------+---------------------+解释:Alice (customer_id = 4) 和 Finn (customer_id = 5) 都使用 john@example.com,因此只保留该邮箱地址的第一次出现。
解题方案1、审题,理解题意

题目中有一个名为 customers 的 DataFrame,它由 customer_id、name 和 email 等列组成。目标是根据 email 列删除重复的行,并只保留所有重复电子邮件的第一个出现。

要删除重复行, 可以用pandas 库操作DataFrame 对象的 drop_duplicates 函数,可以指定被视为重复的行所基于的条件。

drop_duplicates 函数参数定义:subset:此参数标识重复行时要考虑的列标签或标签序列。如果未提供,它将处理 DataFrame 中的所有列。keep:此参数确定要保留的重复行。'first': (默认) 删除除第一个匹配项以外的重复项。'last': 删除除最后一个匹配项之外的重复项。False: 删除所有重复项。inplace: 如果设置为 True,则直接对对象进行更改,而不返回新的对象。如果设置为 False(默认),则返回丢弃重复的新对象。2、解题思路

对于题目,我们可以用如下步骤解决:

导入 pandas:

import pandas as pd

定义函数:

def dropDuplicateEmails(customers: pd.DataFrame) -> pd.DataFrame: #该行定义了一个名为 dropDuplicateEmails 的新函数,该函数接受 DataFrame customers 作为输入参数并返回 DataFrame。

基于电子邮件删除重复行:

customers.drop_duplicates(subset='email', keep='first', inplace=True) #该列在 customers DataFrame 上使用 drop_duplicates 方法。

subset='email': 这意味着我们只考虑基于 email 列的重复项。 keep='first': 这表明我们希望保留任何重复电子邮件的第一个匹配项,并删除后续的匹配项。 inplace=True: 这意味着更改将直接对传入的 DataFrame(customers)进行,而不会返回新的 DataFrame。

返回修改后的 DataFrame:

return customers #最后,我们返回修改后的 customers DataFrame,去掉了基于电子邮件的重复行。

3、代码实现

import pandas as pddef dropDuplicateEmails(customers: pd.DataFrame) -> pd.DataFrame:    customers.drop_duplicates(subset='email', keep='first', inplace=True)    return customers
4、执行结果

标签: #dataframe去重复行