
本文档旨在介绍如何使用 Pandas DataFrame 有效地过滤掉重复项,并为每个重复组保留指定数量的最新记录。我们将演示如何根据特定列识别重复项,并利用 groupby() 和 tail() 函数实现高效的数据筛选,特别适用于大型数据集。
在数据分析和处理中,经常需要处理包含重复项的数据集。 有时,我们需要识别这些重复项并将其删除,但同时希望保留每个重复组中的一部分记录(例如,最新的几条记录)。 Pandas 提供了强大的工具来实现这一目标,尤其是在处理大型数据集时,效率至关重要。
以下是如何使用 Pandas 实现此操作的详细步骤和示例:
1. 导入 Pandas 库
首先,确保你已经安装了 Pandas 库。 如果没有,可以使用 pip install pandas 命令进行安装。 然后,在你的 Python 脚本中导入 Pandas:
import pandas as pd
2. 创建或加载 DataFrame
为了演示,我们创建一个示例 DataFrame,类似于问题中提供的结构:
data = {
'id': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'first_name': ['John', 'John', 'John', 'Mark', 'John', 'Mark', 'John', 'Mark', 'Mark', 'John'],
'last_name': ['Doe', 'Doe', 'Doe', 'Kay', 'Doe', 'Kay', 'Doe', 'Kay', 'Kay', 'Doe'],
'sex': ['Male', 'Male', 'Male', 'Male', 'Male', 'Male', 'Male', 'Male', 'Male', 'Male'],
'country': ['USA', 'Canada', 'Mexico', 'Italy', 'Spain', 'France', 'Peru', 'India', 'Laos', 'Benin']
}
df = pd.DataFrame(data)
print(df)3. 根据特定列排序 DataFrame
为了确保我们保留的是每个重复组中最新的记录,我们需要根据一个能区分记录顺序的列(例如,id 列)对 DataFrame 进行排序。 通常,id 越大,记录越新。
df = df.sort_values(by='id') print(df)
4. 使用 groupby() 和 tail() 删除重复项并保留最新记录
这是核心步骤。 我们使用 groupby() 方法根据需要识别重复项的列(例如,first_name、last_name 和 sex)对 DataFrame 进行分组。 然后,对于每个组,我们使用 tail(n) 方法选择最后 n 条记录,其中 n 是要保留的记录数。 在这个例子中,我们保留每组的最后 3 条记录。
result_df = df.groupby(['first_name', 'last_name', 'sex']).tail(3) print(result_df)
5. 重置索引(可选)
分组和筛选操作可能会导致索引不连续。 如果需要,可以重置索引以使其连续:
result_df = result_df.reset_index(drop=True) print(result_df)
完整代码示例
import pandas as pd
# 示例 DataFrame
data = {
'id': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'first_name': ['John', 'John', 'John', 'Mark', 'John', 'Mark', 'John', 'Mark', 'Mark', 'John'],
'last_name': ['Doe', 'Doe', 'Doe', 'Kay', 'Doe', 'Kay', 'Doe', 'Kay', 'Kay', 'Doe'],
'sex': ['Male', 'Male', 'Male', 'Male', 'Male', 'Male', 'Male', 'Male', 'Male', 'Male'],
'country': ['USA', 'Canada', 'Mexico', 'Italy', 'Spain', 'France', 'Peru', 'India', 'Laos', 'Benin']
}
df = pd.DataFrame(data)
# 排序
df = df.sort_values(by='id')
# 分组并保留最后 3 条记录
result_df = df.groupby(['first_name', 'last_name', 'sex']).tail(3)
# 重置索引
result_df = result_df.reset_index(drop=True)
# 打印结果
print(result_df)注意事项和总结
通过使用 Pandas 的 groupby() 和 tail() 方法,可以有效地从 DataFrame 中删除重复项,并为每个重复组保留指定数量的最新记录。 这种方法简单、灵活且高效,非常适合处理各种数据分析任务。
以上就是Pandas DataFrame 中高效去除重复项并保留指定数量的最新记录的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号